当开发人员在他们的项目构建路径中使用不同版本的JBoss时,如何最好地处理Git中的.classpath文件?

onl*_*wei 6 eclipse git jboss classpath egit

我是Git的新手,我在解决这个问题上遇到了很多困难.

我们在Eclipse中使用JBoss Application Server 5.1.有些人已经下载了JBoss Tools Eclipse插件,因此他们可以将JBoss 5.1 Runtime Server作为"JBoss AS 5.1"添加到他们的Eclipse工作区.这会产生如下所示的类路径:

<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.jboss.ide.eclipse.as.core.server.runtime.runtimeTarget/JBoss 5.1 Runtime"/>
Run Code Online (Sandbox Code Playgroud)

其他人没有看到下载和安装JBoss Tools插件的价值,所以他们只使用Eclipse的内置JBoss服务器适配器,它只适用于JBoss v.50.它们有一个类路径行,如下所示:

<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.generic.runtimeTarget/JBoss v5.0"/>
Run Code Online (Sandbox Code Playgroud)

我不想将.classpath添加到我的.gitignore文件中,因为:

  1. 这些文件已经被推送到我的原点,删除它们是一个非常痛苦的过程,我曾经尝试过并且在过去无法理解.
  2. 我希望设置新工作区的人能够从Git导入项目并立即开始工作.

到目前为止,我们只是尝试了在工作目录中修改我们的.classpath文件,但从未提交过.这很烦人,不仅因为它们一直显示在我们的git状态,但有时它们不允许我们在Egit中合并或切换分支 - 抱怨未提交的更改.

我已经在互联网上阅读过使用Classpath变量的内容,但我似乎无法找到JBoss库的正确路径.我上面列出的类路径行似乎指向Eclipse/plugins目录中的某个地方?但我找不到它.我也尝试将一些变量指向我的C:\ jboss-5.1.0.GA \目录,但这似乎也没有做任何事情.

有没有办法将.classpath文件保留在存储库中,因为它现在处于当前状态,因此克隆存储库的新用户仍然可以获取它们,但是然后忽略开发人员对文件进行的所有未来更改?

小智 6

Pagebakersgit是一个简单的,每个开发人员一次的解决方案

git update-index --assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)

要撤消它,只需使用

git update-index --no-assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 1

另一个答案可以是使用内容过滤器驱动程序,即您在文件中声明的脚本.gitattribute

过滤器驱动程序

在签出您的存储库时,smudge 脚本将负责分析本地环境、检测到位的 JBoss 并进行classpathentry相应的调整。
这样,您可以保留已版本化的文件中最有用的内容,同时适应少数classpathentry不正确的特殊情况。

  • 您链接到您自己的答案,该答案...链接到您自己的答案。 (2认同)