EGit:如何防止快进合并?

Cyr*_*ril 8 eclipse git merge egit

我工作的公司给了我一个将他们的java项目从CVS转移到Git的项目.出于几个原因,他们不想使用除Eclipse之外的其他工具.所以我们坚持使用EGit.

我搜索了很多,以找到适合我们项目的工作流程.这个似乎非常相关并且被许多人使用:http://nvie.com/posts/a-successful-git-branching-model/

问题在于,当我们尝试使用提交,分支和合并来查看它如何与EGit一起工作时,发生了许多快进合并.快进合并的问题在于它会让您失去分支的起点.

我们工作的客户希望能够选择下一版本中哪些功能,哪些功能不会.这是我们想要从CVS迁移到Git的主要原因之一,因为在CVS中似乎没有简单的方法来查找由于功能#1而修改了哪些文件以及哪些文件是针对功能#2修改的.在git中,我们可以为功能#1和#2创建分支,并找到针对这些功能修改的文件.但是,由于快进,就像回到CVS一样,我们无法知道哪个是功能#1,哪个是功能#2.

那么有什么方法可以防止快速合并?我们尝试将这些配置放在Eclipse中:

[core]
mergeoptions = --no-ff

[merge]
ff = false
Run Code Online (Sandbox Code Playgroud)

但它并没有阻止EGit进行快速合并.如果没有使用JGit/EGit实现此功能,是否有任何其他方法可以使用Egit遵循客户需要的工作流程(选择要发布的功能的能力).使用命令行可能会解决问题,但是如果可以将它保留在Eclipse中,那就太好了.

谢谢

rob*_*nst 7

EGit bug 336933是关于支持这些选项的,它是用EGit 2.3修复的,请参阅发行说明.

如果你还没有使用2.3,那么(丑陋的)解决方法可能如下所示:

  • 在合并之前,使用历史记录视图检查它是否会导致快进合并
  • 如果是这样,请在master(或您想要合并到的分支)中在不相关的文件中进行提交
  • 然后进行合并


Cha*_*esB 1

看起来这是不可能的,因为 JGit 不支持某些合并选项,包括 --no-ff。

请参阅这篇文章,有一个关于此的错误报告。