【发布时间】:2011-10-27 00:08:36
【问题描述】:
我们团队中的每个人都使用 IntelliJ IDEA,我们发现将其项目文件(.ipr 和 .iml)放入源代码控制中很有用,这样我们就可以共享构建配置、设置和检查。此外,我们还可以在 TeamCity 的持续集成服务器上使用这些检查设置。 (我们在 .gitignore 文件中有每个用户的工作区 .iws 文件,而不是在源代码控制中。)
但是,当您在 IDEA 中执行任何操作时,这些文件几乎不会发生变化。 IDEA 的问题数据库中有一个问题 (IDEA-64312),所以也许有人会认为这是 IDEA 中的一个错误,但在可预见的未来,我们需要忍受它。
直到最近,我们还在使用 Subversion,但我们最近切换到了 Git。我们每个人都刚刚习惯了拥有一个我们忽略并且没有签入的项目文件的更改列表,除非有我们想与其他人共享的项目文件更改。但是对于 Git,真正的力量似乎是(从我们正在探索的)它鼓励的连续分支,并且在分支之间切换是一种痛苦,因为项目文件总是被修改。通常它可以以某种方式合并更改,并尝试处理现在应用于新分支的项目文件更改。但是,如果新分支更改了项目文件(例如该分支正在处理尚未在其他分支中的新模块),git 只会抛出一个错误,合并文件没有任何意义当两个分支都有更改并且您在本地进行更改时,我更能理解它的意义。在命令行中,可以在“git checkout”命令上使用“-f”来强制它抛出本地更改并使用分支的更改,但是(1)IDEA(10.5.1)中的 Git Checkout GUI 命令似乎没有我们可以找到的选项,因此我们需要定期切换到命令行,并且(2)我们不确定我们是否要养成使用它的习惯标记并告诉 Git 丢弃我们的本地更改。
所以,对于我们必须处理的选项,我们有一些想法:
- 将项目文件完全脱离源代码管理。将它们放在 .gitignore 中,并通过其他方式将它们分发给每个人和 TeamCity,可能是将它们放在其他地方的源代码控制中或以其他名称。我们的团队足够小,这个选项足够可行,可以考虑,但似乎不太好。
- 继续使用它,尝试确保在给定时间管理我们在哪些分支上拥有哪些文件。作为其中的一部分,我们可能会鼓励每个开发人员在他们的系统上拥有每个项目的多个副本,这样他们就可以将每个项目签出到具有可能不同项目文件集的不同分支。
- 尝试仅将项目 (.ipr) 放在源代码管理中,模块 (.iml) 文件不在源代码管理中,而在 .gitignore 文件中。似乎在.ipr 中定期自行切换的主要内容是共享构建配置的顺序,但也许我们可以单独分享有关如何设置这些配置的信息。我不太确定 IDEA 如何处理这种只有部分文件的情况,尤其是在新结帐时。
我想我希望我们错过了一些明显(或不明显)的解决方案,也许是处理 Git 和 IDEA 似乎都具有的巨大可定制性。但似乎我们不可能是唯一有这个问题的团队。 Stack Overflow 上类似的问题包括3495191、1000512 和3873872,但我不知道,因为它们是完全相同的问题,也许有人可以提出优缺点我概述的各种方法、这些问题的答案中列出的方法或他们推荐的方法。
【问题讨论】:
-
参见stackoverflow.com/questions/3041154/… -> IDEA 常见问题解答:devnet.jetbrains.com/docs/DOC-1186
-
下面的答案提供了 gitignore.io 作为一个很好的基础。我发现它很有用,即使在事实发生三年后:gitignore.io/api/java,android,eclipse,intellij
-
请注意,我提到的 IDEA 问题 youtrack.jetbrains.com/issue/IDEA-64312 在 IntelliJ IDEA 14 中已标记为已修复,因此那些使用最新版本并希望将文件保留在源代码管理中的人现在可能会有更好的时间比我发布这个问题的时候。
标签: git version-control intellij-idea