我需要锁定git repo的master分支。我试过预提交钩子,但它们只是客户端钩子,但我想从大多数用户锁定master分支。任何人都可以告诉我在git上使用pre-receive hook的步骤(我使用github)或者更好的方法来锁定master吗?
PS:我们的github许可版本不支持gitolite。
答案 0 :(得分:2)
许可GitHub的意思是“GitHub:enterprise
”,这也意味着,如文章“Migrating from GitHub:FI”中所述:不允许自定义挂钩。
(另见“How can I add a custom git hook to a GitHub Enterprise repo?”)
所以我会以不同的方式处理这个问题,并且在该服务器上不维护一个repo,而是维护两个repos(第二个是第一个的克隆)。
每个人都可以推送到第一个,但只有选定的用户可以推送到第二个,这允许他/她从第一个回购中选择什么有资格被推到第二个。
因此,“repo2
”代表您的“master
”,而“repo1
”代表所有其他用户可以推送的任何其他分支。
这有点类似于GitHub gist article。
我建议将发布工程团队分成他们自己的组织 开发人员必须分配驻留在发布工程团队中的所有存储库 开发人员将能够在其组织内承诺
master
他们必须发送拉取请求才能将其提交到release_engineering
组织。注意:需要一些时间来说服客户承诺
master
acme_developers/foobar
master
分支与acme_release_engineering/fooba
{{1}}分支的承诺不同。< / p>
答案 1 :(得分:1)
简单的解决方案可能是在gitolite或其他支持分支锁定的系统上克隆和托管存储库,并设置一个post-commit钩子镜像到当前的github存储库,如果你打算保留它。我们目前正在使用github克隆。