Java 在Git/Mercurial中我可以安全地忽略Eclipse project.metadata吗?
我们在包含多个Java项目的Eclipse工作区中有Eclipse RCP应用程序的代码。我们将Mercurial与一个简单的.hgignore just*.class一起使用(但同样的问题也适用于Git) 即使对代码做一点小的更改也会导致.metadata中的许多文件发生更改 我想从版本控制中排除部分或全部.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。如果我们完全排除它,工作区将丢失 有人知道我们可以安全排除什么吗?或者,如果我们将代码下载到新的计算机上,我们如何重新创建它?工作区元数据真的不应该保存在源代码管理中。基
有人知道我们可以安全排除什么吗?或者,如果我们将代码下载到新的计算机上,我们如何重新创建它?工作区元数据真的不应该保存在源代码管理中。基本工作区配置可以通过共享。我个人知道的文件有:
- 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工作区存储在单个存储库中的原因。谢谢--看起来很有希望。我将尝试一下。项目集文件包括哪些项目应该是