哪些Eclipse文件属于版本控制?
显然,哪些Eclipse文件适合放在源代码控制之下?
在我的项目中,具体来说,我想知道:
.metadata / *
项目DIR /。工程
项目DIR /的.classpath
项目DIR / .settings / *
如果有这些依赖,请解释你的指导方针。
元数据不应该在源代码pipe理中进行pipe理。 它们主要包含与您的工作区相关的数据。
唯一的例外是.launch
XML文件(启动器定义)。
他们被发现在
[eclipse-workspace]\.metadata\.plugins\org.eclipse.debug.core\.launches
而且应该将它们复制到项目目录中:当项目刷新时,这些configuration将显示在“运行configuration”对话框中。
这样,这些启动参数文件也可以pipe理到SCM中。
(警告:在“ 运行 / 启动 / 启动configuration”首选项面板中, 取消选中“删除关联资源时删除configuration”选项:软删除项目以重新导入项目很常见 – 强制重新初始化eclipse metadata。但是这个选项,如果选中,将删除你的详细启动参数!)
project-dir/.project project-dir/.classpath project-dir/.settings/*
应该在你的SCM中(特别是根据Eclipse文档的 .project
和.classpath
)。
目标是任何人都可以签出/更新他/她的SCM工作区,并将Eclipse项目导入Eclipse工作区。
为此,您只想使用链接的资源在.classpath中使用相对path 。
注意:如果project-dir
指向“外部”项目目录,而不是在eclipse工作区下创build的目录,则更好。 这样,这两个概念(日食工作区与SCM工作区)显然是分开的。
ipsquiggle在评论中提到,正如我在旧的答案中提到的,实际上可以将启动configuration直接保存为共享文件到您的项目目录中。 所有启动configuration可以像其他项目文件一样进行版本化。
(从博客文章中提示:从KD 创build和共享启动configuration )
我目前正在一个项目中,我们有源代码pipe理下的.project和.cproject文件。 这个想法是,与库path和链接指令相关的设置会在整个团队中传播。
实际上效果不好,合并几乎总是回到冲突状态,需要在日食以外解除冲突,然后项目closures再重新开放,让变更生效。
我不build议让他们在源代码pipe理。
CDTconfiguration文件不是源代码控制友好的。 有一个错误提交.cproject文件非常频繁地更改并导致冲突,请参阅在资源库中共享cdt-project文件始终会导致冲突 。
有些项目,如使用Maven的项目,喜欢根据POM生成.project文件。
也就是说,除此之外 – .metadata不应该在源代码pipe理中。 您的项目将不得不根据您计划如何pipe理标准等来确定projectdir / .settings是否执行。 如果你可以诚实地相信你的开发者根据标准来设置他们的环境,你不需要为任何项目定制任何特殊的东西,那么你就不需要把它们放进去。我build议特别configuration每一个项目。 这使得开发人员可以在同一个工作空间内处理多个项目的内容,而不必前后改变默认设置,并且使得设置非常明确,覆盖任何默认设置以符合项目标准。
只有困难的部分是确保他们都保持同步。 但在大多数情况下,您可以将.settings文件从项目复制到项目。 如果你有什么特别的不想在源代码控制中,如果你的SCM支持的话,为它们设置svn:ignore。
.classpath文件非常适合用于检查scm,因为手动设置可能需要很多工作,而且对于新开发人员来说,很难进入项目。 这是真的,它可以从其他来源产生,在这种情况下,你会检查另一个来源。
至于设置,取决于设置。 这是一个灰色地带,但是一些设置几乎是强制性的,能够检出一个项目,在Eclipse中导入它,并且设置好所有东西并且很方便。
因此,在我们的项目中,我们保留了名为CVS.settings的.settings文件夹的副本,我们有一个ant任务将其复制到.settings。 当您从CVS获得项目时,可以调用“eclipsify”ant任务将默认设置复制到新的.settings文件夹中。 当您configuration每个人在项目上开发所需的设置时,将这些设置合并到CVS.settings文件夹中并将其提交到CVS。 这样在SCM中保存设置就成为一个有意识的过程。 它确实需要开发人员将这些设置合并到不同的设置文件夹中,而这些文件夹会在进行大的更改时进行检查。但这是一个非常简单的系统,效果令人惊讶。
我会说没有一个。 他们很可能包含只与您的工作站相关的信息(我正在考虑图书馆和所有的path)。 另外如果你的团队中有人不使用Eclipse?
考虑:
.classpath .project .launch
只要你坚持使用项目相关的path,这些应该在版本控制。 这使得其他开发人员可以检查项目并立即开始工作,而不必经历其他开发人员所经历的所有设置难题。
您可能会想要将.metadata包含在版本控制中,因此Eclipse开发人员可以检出整个工作区,并使用所有正确的项目进行预configuration,但它包含大量用户特定的信息,只要有人在其上进行操作,它就会改变,所以我会build议不包括.metadata。 只需导入所有现有的Eclipse项目,就可以轻松构build本地工作区。
我花了太多时间为新同事(和我自己)configurationeclipse工作区设置。 我最终做的是把自己的.metadata拷贝到新的开发者机器上。
如果你正在一个团队中工作,那么我认为以下是保持版本控制的非常好的候选人:
- 安装了JRE和他们的名字
- 服务器运行时环境
- Java编辑器模板
- 版本控制键盘快捷键
- 不提供项目特定设置的插件设置
- Maven设置
- 预configuration的angular度
- …