Intellij idea IntelliJ IDEA 9和x2B的最佳实践;Maven+;版本控制

Intellij idea IntelliJ IDEA 9和x2B的最佳实践;Maven+;版本控制,intellij-idea,gradle,version-control,sbt,maven-2,Intellij Idea,Gradle,Version Control,Sbt,Maven 2,该项目使用Maven,因此POM文件是项目信息的主要来源。项目文件中有一些有用的设置,最好保留下来 OTOH想法似乎在项目文件结构中创建了太多的冗余更改,这会污染SVN历史记录,有时还会产生冲突 我是否应该将.idea目录和*.iml文件置于版本控制之下?全部?部分 更新:到目前为止,我发现最适合我和我的团队的做法是: 签入所有IDEA文件、*.iml和.IDEA目录。它们包含有价值的信息,每次更新时重新创建这些信息都是浪费时间 为每个开发人员创建私有分支 将cd放入.idea目录 svn将其切

该项目使用Maven,因此POM文件是项目信息的主要来源。项目文件中有一些有用的设置,最好保留下来

OTOH想法似乎在项目文件结构中创建了太多的冗余更改,这会污染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文件重新创建它们。

    简短回答:不要将这些文件放在源代码管理存储库中,因为您可以“生成”它们(如果你不需要它们,如果它们令人讨厌,如果它们能破坏别人的环境,这一点就更加正确了)

    我个人将以下值用于
    svn:ignore

    target 
    *~ 
    *.log 
    .classpath 
    .project 
    *.ipr 
    *.iws 
    *.iml 
    .settings 
    

    Maven的一大优点是,该工具支持在Eclipse、Idea和Netbeans中将POM转换为本机项目


    因此,我不会签入源代码管理下的.idea或*.iml文件,正如我不会签入RMI存根或类文件一样。

    我看到标准答案是“不要签入项目文件,只签入.pom”。但像.ipr文件这样的文件包含许多有用的设置,这些设置无法从.pom文件派生。如果IntelliJ的其他用户想要共享这些设置,该怎么办?我知道.ipr文件的设计是为了进行版本控制(请参阅示例)。我希望我有一个实际的答案,但我还没有找到一个好的做法。

    我认为您应该将.idea目录放入版本控制。其中包含的大多数配置都应该进行版本跟踪,例如编译器配置

    唯一不属于版本控制的文件是.idea/workspace.xml,因为它只包含特定于本地环境的配置


    IntelliJ Idea实际上默认情况下会将workspace.xml放入忽略列表,因此如果您使用Idea签入,您应该在不更改任何内容的情况下进行设置。

    我的意见是,我们应该将任何IDE特定的文件置于版本控制之外。我们的想法是,我们应该以与IDE无关的形式保留尽可能多的信息,如Maven pom文件等等。所有关键项目设置都可以保存在那里。将所有主要项目设置保存在pom文件中,我看不出有任何认真的理由不仅要签入IDEA项目配置,还要签入任何其他IDE特定的配置。此外,.IDEA文件夹样式的项目配置确实会污染变更集日志。我们仍然希望保留p版本控制中的IDEA项目设置,我们至少可以将它们存储为单个.ipr文件格式。

    我来晚了,但这个确切的问题一直困扰着我。我只是受到了我认为可以工作的东西的启发,至少在我们的源代码控制系统中

    IntelliJ文件不必与权威的pom.xml和源文件“一起”存储。如果这些与源文件无关的更改记录到源代码树中的其他位置,则版本控制历史记录不会被“污染”


    因此,我将尝试将IntelliJ文件移动到版本控制系统中的一个平行位置,使用简单的文件/目录映射来重新统一开发人员机器上的源文件和项目文件,并监视版本控制系统中纯粹影响构建的文件的更改。

    我使用的是.idea目录布局,它应该是对VC更友好。如果你不小心的话,每次都会有很多变化污染VC的历史。我想尝试的一种可能性是将。想法放在svn下:忽略,但根据需要不时手动检查。同样的情况也适用于.classpath和.project Eclipse文件。这似乎更多的是一个问题,而不是一个答案。我认为是属于另一个答案的注释。(对不起,我知道这样说让我有点像“堆栈溢出程序警察”但是,如果人们正确使用该系统,该系统运行得非常好。因此,请投票否决你认为错误的答案,并投票支持你喜欢的答案。我认为Alexei比其他人更正确地回答了这个问题,所以我投票支持他,而其他人则不支持。)这实际上就是最初问题的原因:。我使用的是创意(当然没有workspace.xml)它一直在产生变化。这些变化扰乱了历史,让我处理得太多。我如何减少这些变化?我用了几天这种方法,没有注意到任何不必要的变化