我们将IntelliJ .IPR和.IWS文件保存在我们的源代码管理中,但是只要打开它们,它们就会被IntelliJ修改,即使没有对项目进行任何工作。
我们做错了什么?
答案 0 :(得分:38)
“我们将IntelliJ .IPR和.IWS文件保存在我们的源代码管理中,但是只要打开它们,它们就会被IntelliJ修改,即使没有对项目进行任何工作。”
.IWS文件肯定是每个开发人员文件,因此它不应受源代码控制。
对于最近项目中的.IPR文件,我们最初尝试对此文件进行版本化处理,就像使用.Net项目和VS.Net .SLN文件一样。我们的目标是在15分钟内让开发人员在干净的PC上运行并运行,包括安装IDE或本地数据库等相关软件所需的时间。最后,我们花了一些时间来调整本地配置,如下所示。
问题是.IPR文件存储的设置多于单个插件的.sln文件-eg设置。因此,覆盖的主要原因是,如果具有不同插件配置的开发人员打开IPR文件,则会将一些插件的默认设置写入该文件。我们觉得开发人员不应该将自己限制在给定的插件超级集(只是最小配置)。
我们缓解问题的方式(虽然没有完全解决)是切换到.idea文件夹格式。这将获取.IPR文件的内容,并将许多节点拆分为.idea子文件夹中的单个文件和文件夹。从这里我们能够从源代码控制中排除许多经常写入的文件。我们排除的一些文件是:
我们想让IntelliJ独自留下的一些文件是(虽然责任也可以归到插件开发者而不仅仅是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项目文件,不要担心修订版本号上升。他们没有太多的成本。