合并IntelliJ IDEA .IPR和.IWS文件

rip*_*234 25 version-control merge projects-and-solutions intellij-idea

我们将IntelliJ .IPR和.IWS文件保存在我们的源代码控制中,但是只要打开它们,它们就会被IntelliJ修改,即使没有对项目进行任何工作.

我们做错了什么?

use*_*386 39

"我们将IntelliJ .IPR和.IWS文件保存在我们的源代码控制中,但只要打开它们,它们就会被IntelliJ修改,即使没有对项目进行任何工作."

.IWS文件绝对是每个开发人员文件,因此它不应该受源代码控制.

至于最近项目中的.IPR文件,我们最初试图将此文件版本化,就像使用.Net项目和VS.Net .SLN文件一样.我们的目标是在15分钟内让开发人员在干净的PC上运行并运行,包括安装IDE或本地数据库等相关软件所需的时间.最后,我们接近了一些时间来调整本地配置,如下所示.

问题是.IPR文件存储的设置多于单个插件的.sln文件-eg设置.因此,覆盖的主要原因是,如果具有不同插件配置的开发人员打开IPR文件,则会将一些插件的默认设置写入该文件.我们觉得开发人员不应该将自己局限于给定的插件超级集(只是最小配置).

我们缓解问题的方式(虽然没有完全解决)是切换到.idea文件夹格式.这将获取.IPR文件的内容,并将许多节点拆分为.idea子文件夹中的单个文件和文件夹.从这里我们能够从源代码控制中排除许多经常写入的文件.我们排除的一些文件是:

  • workspace.xml
  • dataSources.xml
  • sqlDataSources.xml
  • dynamic.xml

我们想让IntelliJ独自留下的一些文件是(虽然责任也可以归到插件开发者而不仅仅是Jetbrains):

  • projectCodeStyle.xml(因此我们可以在项目中获得一致的代码格式 - 再次根据开发人员的本地插件组合覆盖它).
  • runConfigurations文件夹下的任何文件.配置运行配置可能非常耗时,特别是如果您有一个具有多个方面的复杂应用程序.通过简单地打开IDE或构建来改变最常见的愚蠢的事情是RunnerSettings下的"DEBUG_PORT"选项.我的意见是,如果它是动态分配的,为什么不具有"动态"值?
  • misc.xml.该文件还包含插件配置.有些设置看起来很方便共享,而其他设置看起来更适合个人配置.例如,IvyIDEA插件为您的ivy配置文件提供了绝对路径.
  • 模块文件.这些大部分都是独立的,但是不必要的覆盖的一个例子是IvyIDEA插件,它将本地ivy-cache位置的详细信息放在这个文件中.但这又是插件的错,而不是真正的Jetbrains.

希望这可以帮助.

基督教.

  • 是的 - 很好的答案!在Jetbrains论坛上,您支持排除workspace.xml的决定:http://devnet.jetbrains.net/message/5252427(他们还建议在使用.idea格式时排除tasks.xml). (3认同)

duf*_*ymo 0

一种解决方案是不将您的 IntelliJ 项目置于源代码管理中。这意味着它们很容易重新创建。

您可以告诉 Subversion 它应该忽略的文件。将您的 IntelliJ 文件添加到该列表中。

“...即使没有在项目上完成任何工作...” - 这表明您经常打开 IntelliJ 而没有在项目上做任何有用的工作。也许这才是真正的问题。我不明白为什么你会打开 IDE,而不做一些值得检查的事情。修订号不断上升的成本是多少?在我看来,很小。

所以现在我改变了主意。检查 IntelliJ 项目文件,不必担心修订号不断增加。它们不会花费你太多钱。