如何锁定git repos master分支?

时间:2012-09-01 17:20:34

标签: git hook pre-commit-hook

我需要锁定git repo的master分支。我试过预提交钩子,但它们只是客户端钩子,但我想从大多数用户锁定master分支。任何人都可以告诉我在git上使用pre-receive hook的步骤(我使用github)或者更好的方法来锁定master吗?

PS:我们的github许可版本不支持gitolite。

2 个答案:

答案 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克隆。