该项目使用 Maven,因此 POM 文件是项目信息的主要来源。项目文件中有一些有用的设置可以很好地保留。
OTOH IDEA 似乎在项目文件结构中创建了太多冗余更改,这会污染 SVN 历史记录,有时还会产生冲突。
我应该将 .idea 目录和 *.iml 文件置于版本控制之下吗?在全?部分?
更新:所以到目前为止,我发现为我和我的团队工作的最佳实践是:
- 检入所有 IDEA 文件、*.iml 和 .idea 目录。它们包含有价值的信息,每次更新时重新创建它是浪费时间。
- 为每个开发者创建私有分支
- cd 进入 .idea 目录
- svn 将其切换到其私有分支对应物
- 不要在定期提交时签入 IDEA 文件——它们会污染历史记录。检查他们的特殊提交。
这样,您将 .idea 目录的内容保留在版本控制中,但不会影响常规提交。任何开发人员都可以访问任何其他人的 IDEA 目录。
更新 2:自从写了这个问题以来,我已经改变了我的做法,不将任何 IntelliJ 文件签入版本控制,正如许多响应者所建议的那样。这是我目前对 Maven 和 Gradle 的实践。这些工具已经发展到可以始终从原始 .POM 或 .gradle 文件中复制关键信息的程度。当文件更改时,IDE 会可靠地跟踪更改,因此您不会经常丢失 IDE 文件,因此无需签入。
更新 3:问这个问题 7 年后,它似乎仍然相关。相同的最佳实践也适用于 Gradle(可能也是 SBT):不要签入 IDE 文件,必要时从基本的 POM、.gradle 或 SBT 文件重新创建它们。