Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git重新基址流与代码审查?可能的_Git - Fatal编程技术网

git重新基址流与代码审查?可能的

git重新基址流与代码审查?可能的,git,Git,是的,另一个git流问题..:( 我非常了解“标准”git rebase流程: 开发人员在上游分支(如“主”分支)的基础上创建跟踪分支(如“featureA”) 开发人员编码、提交、使用rebase拉取、编码、提交、使用rebase拉取等 代码完成后,开发人员压缩提交并推送到master 我遇到的问题是,这在与母版合并之前没有留下代码审查的空间。审查者只有在它位于母版上时才能看到更改,因此如果开发人员需要调整任何内容,那么对于给定的功能,母版上会有多个提交。理想情况下,只有一个提交 我知道有

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

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

  • 开发人员在上游分支(如“主”分支)的基础上创建跟踪分支(如“featureA”)
  • 开发人员编码、提交、使用rebase拉取、编码、提交、使用rebase拉取等
  • 代码完成后,开发人员压缩提交并推送到master
我遇到的问题是,这在与母版合并之前没有留下代码审查的空间。审查者只有在它位于母版上时才能看到更改,因此如果开发人员需要调整任何内容,那么对于给定的功能,母版上会有多个提交。理想情况下,只有一个提交

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

  • 让开发人员将功能分支推到远程。问题是,在他们从master重新设置基础后,推必须是强制推,虽然在这种情况下可能是安全的,但我不希望像往常一样
  • 不要对功能分支的上游更改重新设置基础,合并它们。这样我就不能挤压功能分支并将提交推回到主功能(右??)
  • 使用gerrit/github。我不得不猜测,在纯git中有一种方法可以实现这一点

有更好的方法吗?

有一些第三方工具允许更复杂的审查工作流。我们目前正在评估基于的工作流

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

  • 开发人员提交到一个功能分支中。完成后,他挤压该功能分支并将其重定到当前主功能上
  • 代码审查软件禁止直接进入主分支,因此开发人员随后将该功能(压缩为一次提交)推送到审查系统中进行审查。Gerrit透明地将每个审查请求作为一个单独的合并分支处理(cherry pick也是可能的,但不是默认的)当审查完成时
  • 如果更改未通过代码审查,开发人员可以修改提交并将提交重新推送到审查系统。如果多个(修改的)提交属于同一个功能审查请求,软件将重新识别。当审查最终完成时,只有最新的提交合并到实际的主分支中。
    当然,因为每个特性都只是一个提交,所以不可能跟踪开发人员在代码审查期间执行的调整(但是,正如我所理解的,这实际上是需要的)。但是,每个审查请求的历史记录都由Gerrit管理,因此没有任何东西真正丢失

我们自己仍在评估类似的工作流,但尚未在生产中使用它。因此,我无法说明这种方法在实际场景中的实际效果如何。不过,我的观点是,如果您对使用Git的更复杂的审阅工作流感兴趣,Gerrit可能值得一看。

这是最大的问题工作流必须压缩为一次提交。这是Gerrit的一个限制。CodeCollaborator绕过了这个问题,允许多个提交,这是我们更喜欢的。

现在有很多拉请求工具支持
重基
+
合并
+
--ff only


谢谢helmbert,我实际上更新了我的问题-如果可能的话,我想做的一件事是不使用gerrit/github,这主要是因为它们都不可能在我的组织中运行。不过,我确实喜欢gerrit流。