【问题标题】:Which NetBeans projects files should go into source control?哪些 NetBeans 项目文件应该进入源代码管理?
【发布时间】:2010-11-19 00:56:03
【问题描述】:

我们通常将 Eclipse 用于特定的 Java 项目,但最近我将该项目导入 NetBeans 以使用其对话框构建功能。

由于我可能会回到这个,我想将 NetBeans 项目文件存储到版本控制中。但是,我不想提交“我的”与“项目”的文件,即我自己的设置与其他用户的设置冲突的文件。

NetBeans 在顶级项目区域中创建了以下结构:

nbbuild
nb-build.xml
nbproject
    <various files>
    configs
    private

显然nbbuild 是构建输出,因此不会进入。nb-build.xml 文件似乎很可能,nbproject 的大多数文件也是如此。然而,nbproject/private 暗示它是“我的”。偷看“配置”,我不清楚这是我的还是项目...

谁有一些指导方针?

【问题讨论】:

    标签: version-control netbeans project


    【解决方案1】:

    您也可以查看
    https://github.com/github/gitignore/blob/master/Global/NetBeans.gitignore

    这个开源项目包含
    有用的.gitignore模板集合

    【讨论】:

      【解决方案2】:

      根据 Netbeans 6.8 的测试,只有 project.xmlconfigurations.xml 和主 makefile('nbproject' 目录的父目录中的可定制文件,具有前/后目标定义)必须通过存储库分发.所有其他文件将由 Netbeans 自动(重新)生成(Makefile-impl.mlMakefile-variables.ml、所有Makefile-$CONFPackage-$CONF.bash)。显然,“私人”目录也应该被忽略。

      【讨论】:

        【解决方案3】:

        NetBeans knowledge base article on project files & version control 讨论了 NetBeans 项目文件,并就哪些文件是项目特定的(即可以通过版本控制共享)以及哪些是用户特定的文件提供了松散的建议。

        这是关于版本控制的部分:

        如果项目已从版本控制系统中签出,则不应将 build(或 nbbuild)、dist(或 nbdist)和 nbproject/private 文件夹签入该版本控制系统系统。

        如果项目在 CVS、Subversion 或 Mercurial 版本控制系统下,则在导入项目时会为这些目录创建或更新相应的“忽略”文件。

        虽然nbproject/private 应该被忽略,nbproject 应该被检查到版本控制系统中。 nbproject 包含项目元数据,使其他用户无需先导入项目即可在 NetBeans 中打开项目。

        【讨论】:

        • 提供的墨水已损坏。它本质上使这个答案毫无用处。
        • nbactions.xml 呢?
        • 这个答案不再完全适用。如果您有 Maven 或 Gradle 托管项目,请不要提交该 nbproject 目录。 Netbeans 应该在项目导入时自动生成该目录。
        • 我完全同意 @Michael-O Pom.xml 或 Gradle 使用的任何东西都应该是其中包含的任何信息的唯一真实来源。无论 NetBeans 需要什么但可以从以前的文件自动生成,都应该从源代码控制中消失。不同的语言,相同的情况:在 C++ 中,只有 CMake(和柯南,如果存在)文件应该是源代码控制的,而不是 IDE 特定垃圾的 miriad。
        【解决方案4】:

        事实证明,Thomas 和 Petercardona 在某种程度上都是正确的。 NetBeans 建议您只导入源代码和/或文档。哦,还有 nbproject 文件夹,但不是 *nbproject/private** 文件夹。

        来自NetBeans Knowledge Base article on importing Eclipse projects

        版本控制注意事项

        如果项目已签出 版本控制系统,构建(或 nbbuild)、dist (或 nbdist) 和 nbproject/private 文件夹不应签入该版本控制 系统。

        如果项目在 CVS 下, Subversion 或 Mercurial 版本 控制系统,适当的 “忽略”文件被创建或更新 对于这些目录,当项目 已导入。

        虽然 nbproject/private 应该是 忽略,应该检查 nbproject 进入版本控制系统。 nbproject 包含项目元数据,使其他用户能够打开 在 NetBeans 中进行项目,而无需 先导入项目。

        【讨论】:

        • 这与我在上面发布的链接相同,不是吗?我认为 importing only source 和 check in 项目文件之间是有区别的。在我阅读时,前者意味着将文件引入 NetBeans IDE,后者意味着将文件放入版本控制中,并包含项目设置文件。我的问题是关于后者。我想共享控制生成方式的文件(标准化 jar 位置、jdk 级别),但不控制格式首选项、IDE 窗口布局等。
        【解决方案5】:

        无。

        只有非自动生成的源文件、构建脚本和文档(例如,JavaDoc 和 Doxygen 等工具的输出)才应签入存储库。不应签入项目文件、二进制文件和生成的文档等内容。

        原因有两个。首先,您不想用您自己的覆盖其他开发人员的项目设置。其次,其他开发人员可能没有使用与您相同的 IDE(甚至根本没有 IDE),因此不要给他们提供构建(项目或其相关文档)或运行项目所需的更多内容。

        【讨论】:

        • 显然不会添加构建输出(包括 JavaDocs)。但我怀疑最好的答案是“无”。然后,每个开发人员都需要在本地设置通用项目设置,包括简单的事情,例如哪些目录是源,或者要构建的 JDK 级别。不分享那种项目设置信息会给我们带来麻烦。例如,我编写的代码适用于 1.6,但我们的项目适用于 1.5。我承诺,并打破构建。
        • 我不同意这一点。我认为如果项目中的所有开发人员都使用相同的 IDE 和版本,事情会变得容易得多。项目文件应该被签入——这意味着每个开发人员在每次需要处理源代码时都不必费劲地设置他们的环境。如果每个人都将项目和依赖项目以及 JAR 检出到相同的位置或相对路径结构中,那么他们应该能够一步完成检出并单击构建。如果每个人都必须一直重新配置项目并修复损坏的依赖关系,那就浪费了太多时间
        • 从每个 IDE 签入项目文件并没有什么坏处。NetBeans、IntelliJ 和 Eclipse 项目文件可以共存。如果您不使用特定的 IDE,则其他文件不会对您造成伤害。另一方面,如果您使用的是同一个 IDE,那么拥有一组通用的项目文件会很有帮助。
        • @David 拥有所有这些文件,IMO 会使存储库变得混乱。理想情况下,您应该只有一个独立于 IDE 的构建系统(Ant、Maven、Make 等)并使用和维护它。
        • @Thomas 我同意独立于 IDE 的构建过程是明智的,但这不是一个非此即彼的决定。签入有用的特定于 IDE 的文件可以显着帮助一些(例如共享设置),而不会显着打扰其他人(如果必须,将其称为“混乱”)。我的立场(在滥用此评论线程后)是(1)团队必须做出对他们有意义的决定,(2)用明确的“没有 IDE 项目文件属于源代码控制”来回答这个问题是不准确的.感谢讨论;我想看看你的潜在论点是否会改变我的想法。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-24
        • 2011-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-24
        • 1970-01-01
        相关资源
        最近更新 更多