【发布时间】:2010-12-11 22:26:42
【问题描述】:
该项目使用 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 文件重新创建它们。
【问题讨论】:
-
感谢大家的建议。与此同时,我的最佳做法是检查 IDEA 文件,但将其作为单独的变更集进行检查,以免严重破坏 SVN 历史记录。我通常将这些变更集命名为“IDEA madness”:-)
-
参见stackoverflow.com/questions/3041154/… -> IDEA 常见问题解答:devnet.jetbrains.com/docs/DOC-1186
-
@MatthewCornell 也许升级你的评论来回答?
标签: intellij-idea gradle version-control sbt maven-2