Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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
Gerrit是否可以实施这种基于审查的Git工作流?_Git_Workflow_Gerrit - Fatal编程技术网

Gerrit是否可以实施这种基于审查的Git工作流?

Gerrit是否可以实施这种基于审查的Git工作流?,git,workflow,gerrit,Git,Workflow,Gerrit,在git中是否有一个工具可以使拉取请求和组合审查变得简单和安全 我知道github已经提出了几个相关问题(另请参见:,) 人们一直建议使用or 在前面的问题中提出的解决方案有很好的接口,但是当涉及到访问控制时,它们会失败得可怕。我们的公司太小了,不可能强迫一个人检查代码,也不可能有专门的维护人员。因此,我们正在寻找一种工具,以确保(或至少鼓励)在将代码推送到我们的中央存储库之前对其进行审查 注意:不需要绝对的用户访问控制,因为我们通常信任我们的员工。但是,我们希望禁止直接推送到我们的中央存储库,

在git中是否有一个工具可以使拉取请求和组合审查变得简单和安全

我知道github已经提出了几个相关问题(另请参见:,)

人们一直建议使用or

在前面的问题中提出的解决方案有很好的接口,但是当涉及到访问控制时,它们会失败得可怕。我们的公司太小了,不可能强迫一个人检查代码,也不可能有专门的维护人员。因此,我们正在寻找一种工具,以确保(或至少鼓励)在将代码推送到我们的中央存储库之前对其进行审查

注意:不需要绝对的用户访问控制,因为我们通常信任我们的员工。但是,我们希望禁止直接推送到我们的中央存储库,而不限制推送到一个人的权限

因此,该工具(或工具和脚本的组合)应至少完成以下任务:

  • 使拉取请求在web界面中可见。(gerrit做到了这一点)
  • 中央存储库链接到该工具,这样就可以进行只读访问,但推送至少需要另一个人来查看和确认变更集
  • 负责评审和确认的人可以是开发团队中任意的人
  • 该工具必须自动检测(并拒绝)导致合并冲突的请求
  • 它不应该使用已知会改变提交的SHA1哈希的git函数
我对这一解决办法的建议是:

  • 使用gerrit处理拉取请求和审核处理
  • gerrit应该有一个主人的克隆人
  • 对于每个pull请求,gerrit都会检查修补程序是否适用于master而没有冲突(这将是一个脚本挂钩,我不知道gerrit是否具有这些特性)
  • 中央存储库由具有shell访问权限的特权用户(此处名为
    gerrit
    )拥有,并通过http公开
  • 每当其他人查看代码时,web界面中就会有一个apply按钮,它会自动将更改推送到中央存储库

不幸的是,我不认识gerrit,文档也很稀少。是否可以在gerrit中实现此工作流?是否有其他工具可以满足这些要求?

我认为Gerrit将满足您的大部分/所有需求。您可以集成一个CI工具,如Jenkins,它可以与Gerrit交互,并在需要时添加额外的功能

需要记住的一件事是:当发出拉请求时,修补程序可能能够干净地合并,但以后可能仍然存在合并冲突。如果开发人员A发出拉请求1,该请求可以干净地合并,那么开发人员B发出拉请求2-9,该请求2-9也可以干净地合并,如果先审查并提交2-9,则拉请求1可能不再干净地合并


Gerrit有能力尝试并检测到这一点,并在修补程序需要重新设置基础时提醒用户。

严格来说,您不需要让Gerrit将更改推送到另一个存储库以进行托管(尽管它有内置的挂钩以允许推送),因为Gerrit可以充当存储库主机

可以限制Gerrit只应用快速前进的补丁,拒绝那些需要合并的补丁。如果你的项目中不止有几个人在工作,这可能会让你慢下来:参与的人越多,补丁在被接受之前就越有可能需要重新设置基础

应用补丁并不是一个简单的点击操作:查看补丁后,审阅者必须首先选择一个分数(从-2到+2),并使用+2启用“立即应用”按钮。如果您没有CI系统来验证修补程序,他们可能还需要指出他们已经验证了源代码是否正常工作。如果您确实有一个CI bot,但在审阅者查看代码时它尚未完成,他们可以留下反馈,任何人(根据权限)都可以在CI bot完成时触发合并

您对任意团队成员的要求是可以满足的,除非您指的是“不是提交变更的成员的任意团队成员”。我怀疑这就是你真正想要的,但你可能会追溯到这一点。

我真诚地推荐,Opera软件公司开发并使用的Git审查系统。W3C也将其用于


使拉取请求在web界面中可见。(gerrit做到了这一点)

评论家就是这么做的。它与Git完全集成。您只需将批评家设置为Git remote,然后点击
r/your branch
,它就会创建一个评论,并通过电子邮件向所有匹配的评论人发送这些文件的评论

中央存储库链接到该工具,因此可以进行只读访问,但推送至少需要另一个人来查看和确认变更集。

批评家确实有自己的知识库。它附带了一些钩子来做不同的事情,但是对于您的用例,您可能会自己编写一些

负责审核和确认的人可以是开发团队中任意的人。

这是可以的。或者实际上,你(作为审查者)为你想要审查的东西设置了一个审查过滤器。还有“监视”过滤器。在小型回购中,我只是对/(所有东西)进行过滤。在更大的项目上,我有一些,例如
/desktop/linux/
,还有一些带有
*.py
的项目

该工具必须自动检测(并拒绝)导致合并冲突的请求。它不应该使用已知会改变提交的SHA1哈希的git函数。

好得多,两者都可以。我们使用它的方式是重定基址。你可以自己做,它会发现你改变了什么。如果你换了东西,做了一个重基,它会变成老鼠