我知道在github上已经有了几个相关的问题(参见:使用git进行代码审查,带有Git集成的在线代码审查工具)。
人们建议使用gerrit或gist。
以前问题中提出的解决方案具有良好的界面,但是在访问控制方面却极其失败。我们公司太小,无法强制一个人审核代码或拥有专门的维护人员。因此,我们正在寻找一种工具来确保(或至少鼓励)在将代码推送到我们的中央存储库之前进行代码审查。
注意:绝对的用户访问控制并不是必要的,因为我们通常信任我们的员工。但是,我们希望禁止直接向我们的中央存储库推送而不限制推送特权到某个人。
因此,该工具(或工具和脚本的组合)应至少实现以下任务:
- 在Web界面中使拉请求可见。 (gerrit实现了这一点) - 将中央存储库链接到该工具,以便可以进行只读访问,但至少需要另一个人审核和确认更改集才能进行推送。 - 负责审查和确认的人可以是开发团队中的任何人。 - 该工具必须自主检测(并拒绝)导致合并冲突的拉取请求。 - 它不应使用已知会更改提交的SHA1哈希值的git函数。
我的解决方案:
- 使用gerrit进行拉取请求和审查处理。 - gerrit应始终拥有主分支的克隆。 - 对于每个拉取请求,gerrit都会检查补丁是否适用于主分支而没有冲突(那将是一个脚本钩子,我不知道gerrit是否具备这些功能)。 - 中央存储库由具有shell访问权限的特权用户(此处命名为
gerrit
)拥有,并通过http(s)公开。
- 每当另一个人审核代码时,Web界面中都会有一个应用按钮,该按钮将自动将更改推送到中央存储库。不幸的是,我不了解gerrit,文档很少。在gerrit中是否可能实现这种工作流程?或者还有其他工具可以满足这些要求吗?