Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Git/Mercurial中我可以安全地忽略Eclipse project.metadata吗?_Java_Eclipse_Git_Mercurial_Rcp - Fatal编程技术网

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

Java 在Git/Mercurial中我可以安全地忽略Eclipse project.metadata吗?,java,eclipse,git,mercurial,rcp,Java,Eclipse,Git,Mercurial,Rcp,我们在包含多个Java项目的Eclipse工作区中有Eclipse RCP应用程序的代码。我们将Mercurial与一个简单的.hgignore just*.class一起使用(但同样的问题也适用于Git) 即使对代码做一点小的更改也会导致.metadata中的许多文件发生更改 我想从版本控制中排除部分或全部.metadata。如果我们完全排除它,工作区将丢失 有人知道我们可以安全排除什么吗?或者,如果我们将代码下载到新的计算机上,我们如何重新创建它?工作区元数据真的不应该保存在源代码管理中。基

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

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

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


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

工作区元数据真的不应该保存在源代码管理中。基本工作区配置可以通过共享。我个人知道的文件有:

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

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

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


.class和.settings在我的gitignore中。这些文件分别是生成的和特定于个人的。

GitHub正在维护一个社区“gitignore”项目,该项目为各种平台、编辑器和语言的Ignore列出建议的文件规范:

以下是:


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

元数据和工作区

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

|-- workspace/
|  \-- .metadata/
|  |-- yourProjectOne/
|  |  \-- .git/
|  |  |-- .project
|  |  |-- src/
|  |  |-- ...
|  |-- yourProjectTwo/
|  |  \-- .git/
|  |  |-- .project/
|  |  |-- src/
|  |  |-- ...
特定项目

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

以下是关于
.project
文件的说明:

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

以及:

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

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

Maven

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

没有Maven

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

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

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


如果您对此解释有任何建议或不同意,请留下建议。我希望这对您有所帮助。

我是否了解到您将整个Eclipse工作区存储在一个Mercurial存储库中?您是否考虑过将每个项目存储在一个存储库中,然后将它们分组为一个项目的子存储库伞形存储库,以便您可以一起对它们进行版本设置(尽管我不知道Eclipse是否支持这一点)?这是一个基于插件的产品,每个独立的项目都定义了插件。所有项目都需要在一起或整个产品。因此,单个项目只是整体的一部分,这就是为什么我们希望将整个Eclipse工作区存储在单个存储库中的原因。谢谢--看起来很有希望。我将尝试一下。项目集文件包括哪些项目应该是