在Git/Mercurial中我可以安全地忽略Eclipse项目元数据吗?

gajydyqb  于 2023-03-21  发布在  Git
关注(0)|答案(5)|浏览(106)

我们在包含多个Java项目的Eclipse工作区中有一个Eclipse RCP应用程序的代码。我们使用Mercurial和一个简单的.hgignore just *.class(但同样的问题也适用于Git)。
即使对代码进行很小的更改也会导致.metadata中的许多文件发生更改。
我想从版本控制中排除部分或全部.metadata。如果我们完全排除它,工作区将丢失。
有谁知道我们可以安全地排除什么吗?或者,如果我们把代码拉到一台新的计算机上,我们如何重新创建它?

6l7fqoea

6l7fqoea1#

GitHub正在维护一个社区“gitignore”项目,该项目为各种平台,编辑器和语言的建议文件进行分类:https://github.com/github/gitignore
Eclipse忽略了以下内容:https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore
(If还有其他他们应该知道的filespec,让他们知道!)

zsbz8rwp

zsbz8rwp2#

元数据和工作空间

我从来不会共享.metadata文件夹。事实上,除非你有特殊的原因,我甚至不会共享工作区文件夹,而是单独与git共享每个项目。这样.metadata文件夹将永远在你的git仓库的父文件夹中,你不必考虑是否需要忽略它:

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

具体项目

你可能应该总是共享.project文件,永远不要共享.settings/文件。.classpath可能取决于你的环境,但我也不建议共享它,因为它可能会导致冲突(例如,如果一个用户使用openjdk,另一个用户使用sun-jdk。.settings包含eclipse的首选项和设置,并且变化很大,因此它不应该被共享。如果你在从git克隆项目后正确导入它,那么你也不会有任何问题。
eclipse documentation说明了.project文件的以下内容:
此文件的目的是使项目自描述,以便压缩或发布到服务器的项目可以在另一个工作区中正确地重新创建。
以及:
如果在包含现有项目描述文件的位置创建新项目,则该描述文件的内容将被视为项目描述。一个例外是,如果文件中的项目名称与正在创建的项目名称不匹配,则将忽略该项目名称。如果磁盘上的描述文件无效,则项目创建将失败。
我还建议使用Maven,因为这将为您节省很多依赖管理和.classpath的问题

玛文

与Maven项目的主要区别在于,您可以将项目作为Maven-〉“Existing Maven Projects”导入,因此只需要在git中共享pom.xml和.project文件。Eclipse将自动为您创建.classpath, .settings/文件。因此,显然您不需要共享它们。如果pom.xml中发生了更改,您只需运行Maven-〉“Update project configuration”和Maven-〉”更新依赖项”。

没有玛文

应该共享.project文件,而不是.settings/文件夹。您可以考虑共享.classpath,但它可能会导致冲突,如上所述。我建议也不要共享。使用以下方法导入项目:
在你克隆了git仓库之后,你可以简单地使用Import-〉“Existing Project from Workspace”eclipse将荣誉.project文件,但是会重新创建.classpath.settings/文件。导入之后,你需要从Eclipse手动配置classpath(每当你的团队想要使用另一个库时)。
如果你不共享.project文件,那么就不可能用Eclipse导入项目。你需要先用项目向导创建一个新项目,然后你可以选择import“General-〉File System”,这会把所有的文件复制到你的工作区中。这可能不是你想要的,因为这意味着你不能把git仓库克隆到工作区中,你必须在其他地方克隆它,然后从那里导入它。2因此,你应该总是共享.project文件。
如果你对这个解释有什么建议或者你不同意的话,请留下评论,我希望这能对你有所帮助。

p4tfgftt

p4tfgftt3#

我个人知道的文件有:

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

在某个地方,我有一个Eclipse工作区,用于测试一些与Eclipse相关的工具,它被严重削减了,但可以工作。

t1qtbnec

t1qtbnec4#

我经常保留.project和.classpath,它们不仅对git安全,而且很有用。
.class和.settings在我的gitignore中。它们分别是生成的和特定于个人的。

ncgqoxb0

ncgqoxb05#

工作区元数据真的不应该保存在源代码控制中,基本的工作区配置可以通过team project set共享。

相关问题