代码之家  ›  专栏  ›  技术社区  ›  Irish Buffer

在Git/Mercurial中,我可以安全地忽略Eclipse project.metadata吗?

  •  36
  • Irish Buffer  · 技术社区  · 15 年前

    我们在包含多个Java项目的Eclipse工作区中拥有Eclipse RCP应用程序的代码。我们将Mercurial与一个简单的.hginore-just*.class一起使用(但Git也存在同样的问题)。

    即使对代码做一点小小的更改也会导致.metadata中的许多文件发生更改。

    我想从版本控制中排除部分或全部.metadata。如果完全排除它,则工作区将丢失。

    有人知道我们可以安全地排除什么吗?或者,如果我们把代码放到一台新的计算机上,我们如何重新创建它?

    5 回复  |  直到 13 年前
        1
  •  15
  •   Tom Anderson    15 年前

    我个人知道的文件有:

    • version.ini(不是很激动人心)
    • .plugins/org.eclipse.jdt.core/variablesAndContainers.dat(类路径变量)
    • .plugins/org.eclipse.core.resources/.projects/*/.location(工作区中的项目)

    在某个地方,我有一个Eclipse工作区,用于测试一些与Eclipse相关的工具,这些工具虽然被严重削减了,但仍然有效。我看看能不能把它挖出来。

        2
  •  51
  •   Adam Vandenberg    15 年前

    GitHub正在维护一个社区“gitignore”项目,该项目对各种平台、编辑器和语言的建议忽略文件规范进行编目: https://github.com/github/gitignore

    Eclipse忽略的是: https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore

    (如果有其他文件规范他们应该知道,让他们知道!)

        3
  •  32
  •   lanoxx    14 年前

    元数据和工作区

    我永远不会分享 .metadata 文件夹。事实上,除非您有特殊的原因,否则我甚至不会共享workspace文件夹,而是与git单独共享每个项目。这样的话 .元数据 文件夹将始终位于git存储库的父文件夹中,您不必考虑是否需要忽略它:

    |-- workspace/
    |  \-- .metadata/
    |  |-- yourProjectOne/
    |  |  \-- .git/
    |  |  |-- .project
    |  |  |-- src/
    |  |  |-- ...
    |  |-- yourProjectTwo/
    |  |  \-- .git/
    |  |  |-- .project/
    |  |  |-- src/
    |  |  |-- ...
    

    特定项目

    你应该经常分享 .project 归档,从不归档 .settings/ 文件夹。这个 .classpath 可能取决于您的环境,但我也不建议共享它,因为它可能导致冲突(例如,如果一个用户使用openjdk,而另一个用户使用sun jdk。这个 .settings 包含eclipse的首选项和设置,并且更改很多,因此不应共享。如果在从git克隆项目后正确导入该项目,那么也不会有任何问题。

    这个 eclipse documentation 声明以下关于 .项目 文件:

    此文件的目的是使项目自我描述,因此 压缩或发布到服务器的项目可以 在另一个工作区中正确重新创建。

    以及:

    如果在包含现有的位置创建新项目 项目描述文件,该描述文件的内容将 作为项目描述。一个例外是 如果文件中的项目名与名称不匹配,则将忽略该项目名 正在创建的项目的。如果磁盘上的描述文件是 无效,项目创建将失败。

    我还建议使用Maven,因为这样可以避免依赖管理和.classpath的许多问题

    马文

    与Maven项目的主要区别在于,您可以将项目导入Maven & Gt;“现有的Maven项目”,因此只需要共享POM.XML和 .项目 以git格式归档。然后Eclipse将创建 .classpath, .settings/ 自动为您保存文件。显然你不需要分享它们。如果pom.xml中有更改,只需运行Maven->“更新项目配置”和Maven->“更新依赖项”。

    没有马文

    应该 分享 .项目 文件而不是 .设置/ 文件夹。您可以考虑共享.classpath,但它可能会导致如上所述的冲突。我建议也不要分享。使用以下方法导入项目:

    在您克隆了Git存储库之后,您可以简单地使用来自工作区的“导入-gt”“现有项目”Eclipse将 .项目 但重新创建 .类路径 .设置/ 文件夹。导入之后,您将需要从Eclipse手动配置类路径(并且每当您的团队想要使用另一个库时)。

    如果不共享.project文件,则无法使用Eclipse导入该项目。您需要先使用“项目向导”创建一个新项目,然后选择“导入”“常规”->“文件系统”,这将把所有文件复制到您的工作区中。这可能不是您想要的,因为这意味着您不能将git存储库克隆到工作区中,您必须将其克隆到其他地方,然后从那里导入。因此,您应该始终共享.project文件。

    如果你对这个解释有意见或者不同意,请留下一个推荐信。我希望这能帮上忙。

        4
  •  4
  •   Michael Borgwardt    15 年前

    工作区元数据实际上不应该保存在源代码管理中。基本工作区配置可以通过 team project set .

        5
  •  4
  •   NorthIsUp    15 年前

    我经常保留.project和.classpath,它们不仅对git安全而且有用。

    .class和.settings在我的gitignore中。它们分别是生成的和特定于个人的。

    推荐文章