Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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存储库之前的强制审查(ReviewBoard)_Git_Push_Review Board - Fatal编程技术网

推送到远程git存储库之前的强制审查(ReviewBoard)

推送到远程git存储库之前的强制审查(ReviewBoard),git,push,review-board,Git,Push,Review Board,我希望对推送到公共远程git存储库的任何代码强制使用审查。我选择了作为帮助我们实现这一目标的工具,但是在将任何代码推送到存储库之前,我很难将审查作为一项要求 不幸的是,git预推钩子不是一个选项,从我看到的情况来看,它永远不会成为一个选项。我看到的唯一选择是使用预接收挂钩,但是将它们与审阅绑定在一起有点棘手 为了实现这一目标,每个开发人员都必须遵循如下流程: 编码,提交,编码,提交 审核后(生成新审核) 修复问题、提交、审核后(使用新的差异更新审核记录单) 一旦审查被接受(状态:Ship it

我希望对推送到公共远程git存储库的任何代码强制使用审查。我选择了作为帮助我们实现这一目标的工具,但是在将任何代码推送到存储库之前,我很难将审查作为一项要求

不幸的是,git预推钩子不是一个选项,从我看到的情况来看,它永远不会成为一个选项。我看到的唯一选择是使用预接收挂钩,但是将它们与审阅绑定在一起有点棘手

为了实现这一目标,每个开发人员都必须遵循如下流程:

  • 编码,提交,编码,提交
  • 审核后(生成新审核)
  • 修复问题、提交、审核后(使用新的差异更新审核记录单)
  • 一旦审查被接受(状态:Ship it!),再次提交,并使用诸如“#review”之类的关键字(这必须是提交——如果不需要更改,我想应该修改)
  • git推送
pre-receive钩子必须检查关键字,检查相应的审查是否确实被接受,否则将以错误退出

我觉得在推操作周围创建一个包装器会更好地处理这个问题,并且有一个定制的脚本可以正确地处理所有这一切(它可以在推之前自动创建一个审查票证,使用git config branch存储票证id..review_ticket并在一切结束时推)。这基本上与上面的相同,但是是半自动化的,这也意味着这将限制开发人员如何使用分支(但不一定是个问题)

最后,我可以让开发人员做他们想做的任何事情,但是在远程存储库上运行一个cron作业,检查是否有任何更改是在没有审查的情况下推送的(有点棘手),并发送一封警告电子邮件


不过,所有这些解决方案都有点“肮脏”。是否有人设法建立了这样一个环境,或者可以在这里提供任何提示?请注意,所有这些都必须在共享主机上工作,我真的希望它能与我现有的一套软件一起工作。

您可以编写一个post-receive钩子来搜索您的ReviewBoard安装,以确保在已完成的审查中存在被推入的内容的头部。这会将您的工作流程更改为:

  • 编码,提交,编码,提交,编码,提交
  • 事后审查
  • 使用返工代码修复问题、提交、后期审阅
  • git推送

因此摆脱了丑陋的提交修改功能。

我刚才考虑的另一个选项是强制(通过预接收挂钩)开发人员只推送新分支,这将必须绑定到审查票证(分支可以有一个特定的名称,或者可能再次使用git config)。一旦审核票证被接受,cron作业可能会将其合并到master?