Eclipse 项目 .metadata 在 Git/Mercurial 中可以安全地忽略吗?

2022-09-01 01:46:17

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

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

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

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


答案 1

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

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

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


答案 2

元数据和工作区

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

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

项目特定

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

eclipse 文档对该文件声明了以下内容:.project

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

和:

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

我还建议使用Maven,因为这将为您节省依赖关系管理和.classpath的许多问题

马文

与 Maven 项目的主要区别在于,您可以将项目作为 Maven->“现有 Maven 项目”导入,因此只需在 git 中共享 pom.xml和文件。然后,Eclipse 将自动为您创建文件。因此,显然您不需要共享它们。如果pom中发生了某些变化.xml您只需运行Maven->“更新项目配置”和Maven->“更新依赖项”。.project.classpath, .settings/

没有马文

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

克隆 git 存储库后,您只需使用 Import->“Existing Project from Workspace”eclipse 将支持该文件,但会重新创建 和 文件。导入后,您需要从 Eclipse 手动配置类路径(并且每次您的团队想要使用另一个库时)。.project.classpath.settings/

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

如果您对此解释有建议或不同意,请留下表扬。我希望这对一个或另一个有所帮助。


推荐