在Git / Mercurial中,我可以安全地忽略哪些Eclipse项目.metadata?

我们在包含多个Java项目的Eclipse工作区中拥有Eclipse RCP应用程序的代码。 我们正在使用一个简单的.hgignore只是* .class(但同样的问题将适用于Git)的Mercurial。

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

我想从版本控制中排除部分或全部.metadata。 如果我们完全排除它,工作空间就会丢失。

有谁知道我们可以安全排除? 另外,如果我们把代码放到新的计算机上,又怎么能重新创build呢?

我个人意识到的文件是:

  • version.ini(不是很令人兴奋)
  • .plugins / org.eclipse.jdt.core / variablesAndContainers.dat(类pathvariables)
  • .plugins / org.eclipse.core.resources / .projects / * /。location(工作区中的项目)

在某处,我有一个Eclipse工作区,用于testing一些与Eclipse相关的工具,这些工具相当严重,但工作正常。 我会看看如果我能挖出来。

GitHub正在维护一个社区“gitignore”项目,该目录为各种平台,编辑和语言提供了用于忽略的build议文件规格: https : //github.com/github/gitignore

Eclipse忽略在这里: https : //github.com/github/gitignore/blob/master/Global/Eclipse.gitignore

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

元数据和工作区

我永远不会共享.metadata文件夹。 事实上,除非你有特殊的原因,我甚至不会共享工作区文件夹,而是分别与git分享每个项目。 这样的.metadata文件夹将永远在您的git存储库的父文件夹,你不必考虑是否你需要忽略它无论如何:

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

项目特定

您应该总是共享.project文件,而不是.settings/文件。 .classpath可能取决于你的环境,但我不会build议分享它,因为它可能会导致冲突(例如,如果一个用户使用openjdk而另一个使用sun-jdk .settings包含偏好和设置,很多,所以不应该共享,如果你从git中克隆完成后正确地导入项目,那么你也不会有任何问题。

eclipse文档声明以下关于.project文件:

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

和:

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

我也build议使用Maven,因为这将为您节省很多依赖pipe理和.classpath的问题

Maven的

与Maven项目的主要区别在于,您可以将项目导入为Maven – >“Existing Maven Projects”,因此只需要在git中共享pom.xml和.project文件。 Eclipse会自动为你创build.classpath, .settings/ files。 因此显然你不需要分享他们。 如果pom.xml中的内容发生变化,只需运行Maven – >“更新项目configuration”和Maven – >“更新依赖关系”。

没有Maven

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

克隆git仓库之后,你可以简单的使用Import – >“Existing Project from Workspace”。eclipse将兑现.project文件,但重新生成.classpath.settings/ files。 导入之后,您需要从Eclipse中手动configuration类path(并且每次您的团队都想使用另一个库)。

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

如果您对此解释有任何build议,或者您不同意,请留下您的build议。 我希望这有助于这个或那个。

工作区元数据确实不应该保存在源代码pipe理中。 基本工作区configuration可以通过团队项目集共享。

我经常保持.project和.classpath,不仅对git是安全的,而且是有用的。

.class和.settings在我的gitignore。 这些分别是生成的和特定的人。