如何基于某个规则拒绝git push

3
在我们的代码库中,我们已经告知所有开发者不要在数据库对象前加上一个关键字(ops $ abc)。例如,“update ops$abc.tablename.” 我们已经告知开发者使用“update tablename”进行更改。
但是开发人员仍会犯这种错误。有没有办法拒绝将此类代码推送到分支?

必须在 git push 期间吗?还是您也可以在 commit 上阻止它?因为这可能会有所帮助:Git钩子拒绝包含特定字符串的文件提交 - Gino Mempin
2个回答

4
您可以使用 GitHub受保护的分支
  1. 将您的master 或者 release 分支设置为受保护的。
  2. 添加一个自动化测试,如果开发人员使用 update ops$abc.tablename 则自动化测试将失败。
  3. 配置您的 CI 服务器,在 GitHub拉取请求 打开时运行自动化测试。
现在,开发人员无法使用此更改合并拉取请求(或直接提交到受保护的分支)。

2
您可以使用Git钩子功能来实现此目的。但是,这需要每个开发人员手动设置./.git/hooks/pre-commit。或者,您可以为存储库中的开发人员创建一个shell脚本,将pre-commit文件复制到./.git/hooks中。
无论如何,都需要开发人员合作。

3
也许最好使用服务器端的 pre-receive 钩子。这样,即使有人在本地存储库中没有预先设置 pre-commit/pre-push 钩子,也会执行该钩子,以确保操作的安全性。 - Alderath
2
@Alderath,你说得对。然而,如果git仓库托管在GitHub.com、GitLab.com或大多数公共仓库托管服务中,它们将不允许服务器端钩子。 - monday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接