通过代码审查git rebase流程?可能?

时间:2013-01-23 15:40:20

标签: git

是的,另一个git flow问题.. :(

我非常了解'标准'git rebase流程:

  • 开发人员从上游分支(比如'master')创建跟踪分支(比如'featureA')
  • 开发人员代码,提交,带有rebase,代码,提交,带有rebase的拉动等等。
  • 代码完成,开发人员提交提交并推送到主人

我遇到的问题是,在与主人合并之前没有留下代码审查的余地。审阅者只有在主数据库上才会看到更改,因此如果开发人员需要调整任何内容,则主数据库中将针对给定功能进行多次提交。理想情况下只有一个。

我知道的一些选项可以解决这个问题,但并不理想:

  • 让开发人员将功能分支推送到远程。这个问题是,在他们从主人那里重新推出后,推送必须是一个强制推动,虽然在这个的情况下可能是安全的,但我并不像往常一样。
  • 不要将功能分支的上游更改重新绑定,合并它们。有了这个,我不能压缩功能分支并将提交推回到主(右??)
  • 使用gerrit / github。我必须猜测,有一种方法可以在纯git中实现这一点吗?

有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

有一些第三方工具可以提供更复杂的审核工作流程。我们目前正在根据Gerrit评估工作流程。

一个可能的Gerrit工作流程可能如下所示:

  • 开发人员提交到功能分支。完成后,他会将功能分支压缩并将其重新绑定到当前主服务器上。
  • 代码审查软件禁止直接推入主分支,因此开发人员然后将该功能(压缩到一个提交)推送到审查系统,在那里可以审查它。 Gerrit透明地处理每个审核请求,作为合并的单独分支(樱桃选择也是可能的,但不是默认的)。审核完成后。
  • 如果更改通过代码审核,则开发人员可以修改提交并将提交重新推送到审核系统。该软件重新确认多个(修改的)提交是否属于同一个功能审查请求。当审查最终完成时,只有最新的提交合并到实际的主分支中 当然,由于每个功能只是一次提交,因此无法跟踪开发人员在代码审查期间执行的调整(但是,据我所知,这实际上是需要的)。然而,每个审核请求的历史都由Gerrit管理,因此没有真正丢失。

我们仍在评估与此类似的工作流程,但尚未在生产中使用它。因此,我不能就这种方法在现实场景中的实际效果做出任何陈述。不过我的观点是,如果您对使用Git的更复杂的审核工作流程感兴趣,Gerrit可能值得一看。

答案 1 :(得分:0)

此工作流程的最大问题是必须压缩到一次提交。这是Gerrit的限制。 CodeCollaborator解决了这个问题并允许多个提交,我们更喜欢。

答案 2 :(得分:0)