我们团队中的每个人都使用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,但我不知道,因为他们是完全一样的问题,也许有人能拿出的利弊我有不同的方法概述,这些问题的答案中列出的方法或它们建议的方法。