合并IntelliJ IDEA .IPR和.IWS文件

时间:2009-06-16 09:49:23

标签: version-control merge intellij-idea projects-and-solutions

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

我们做错了什么?

4 个答案:

答案 0 :(得分:38)

  

“我们将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插件为您的常春藤配置文件提供了绝对路径。
  • 模块文件。这些大部分都是独立的,但是不必要的覆盖的一个例子是IvyIDEA插件,它将本地ivy-cache位置的详细信息放在这个文件中。但这又是插件的错,而不是真正的Jetbrains。

希望这有帮助。

基督教。

答案 1 :(得分:4)

如果不确切知道改变了什么,这有点难以自信地回答,但我会说:

  • IWS文件包含描述开发人员IDE如何为此项目排列的信息(包括最近的更改历史记录,每个编辑器窗口的当前状态,可见的可停靠窗口等等)哪些已经崩溃了)。鉴于每个开发人员都应该被允许安排他们喜欢的工作区,这些不应该在源代码管理中。

  • IPR文件描述了项目代码的结构 - 我的意思是指哪些模块是项目的一部分,哪些build.xml文件要使用,哪里可以找到库编译你的代码等。这个可以在源代码管理中,但是如果你允许这些设置从一个开发人员的项目副本到下一个项目,你就会陷入困境。

如果您的IPR文件中有libraryTable组件:

几乎可以肯定的是,每个开发人员都在不同地方的本地计算机上保留共享库(JAR)(构建代码所需);当他们提交更改时,他们的库的位置将被写入IPR文件。如果您这样做,当我更新项目时,我的知识产权副本和您的知识产权副本将与这些JAR的位置发生冲突。

我们通过将JAR文件放在共享位置(例如映射的网络驱动器)中,然后确保每个开发人员将这些文件下载到同一位置(项目根目录下的lib子文件夹工作正常)来解决此问题。缺点是您最终会在项目中使用相同JAR的多个副本(每个项目将引用其自己的lib文件夹),但从好的方面来看,由于每个开发人员使用相同的项目结构,更新IPR应该可以更好地工作。

,否则:

看一看IntelliJ尝试合并的内容(更新时,您应该选择手动合并文件或查看差异,否则请使用您喜欢的差异工具)。如果您可以通过更多关于合并冲突的信息来更新您的问题,那么可能会更容易看到轮子脱落的位置。

答案 2 :(得分:1)

我们为检查到源代码管理(.deleteme)的扩展添加了一个扩展。然后新人可以检查项目,更改扩展,然后去。如果我们进行配置更改,我们会更新已签入的文件。

答案 3 :(得分:0)

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

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

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

所以现在我改变了主意。检入IntelliJ项目文件,不要担心修订版本号上升。他们没有太多的成本。