如何锁定Git仓库的主分支?

4
我需要锁定git仓库的主分支。我尝试了pre-commit钩子,但它们只是客户端钩子,我想要锁定大多数用户的主分支。有人可以告诉我如何在git上(我使用github)设置pre-receive钩子的步骤,或者有更好的方法来锁定主分支吗?
注:我们授权版的github不支持gitolite。

可能是在GIT中锁定分支的方法的重复问题。 - Michael Durrant
由于主分支也是一个分支,这似乎是另一个重复的分支。 - Michael Durrant
@MichaelDurrant 那里提供的解决方案对我不起作用,因为:我们的 GitHub 版本不支持 gitolite。pre-commit hook 是客户端钩子(无法要求每个用户添加此钩子)。而我正在寻找服务器端钩子。 - user1640789
2个回答

2
GitHub许可意味着 "GitHub:enterprise",正如在文章 "Migrating from GitHub:FI" 中所解释的那样:不允许使用自定义钩子
(另请参见 "How can I add a custom git hook to a GitHub Enterprise repo?")

因此,我会采用不同的方法来处理,而不是在服务器上维护一个仓库,而是维护两个仓库(第二个是第一个的克隆)。

每个人都可以推送到第一个,但只有选择的用户可以推送到第二个,这使他/她能够从第一个 repo 中选择哪些内容可推送到第二个repo。
因此,'repo2' 在某种程度上代表您的'master',而'repo1'则表示其他所有用户都可以推送的任何其他分支。
这与 GitHub gist article 有些相似。

我建议将发布工程团队单独分为一个组织
开发人员将不得不 fork 存储在发布工程团队中的所有存储库。
开发人员将能够提交他们组织内的 master
他们必须发送 pull 请求才能将其提交到 release_engineering 组织。

注意:需要一些时间来让客户确信,提交到 acme_developers/foobarmaster 分支与提交到 acme_release_engineering/foobamaster 分支是不同的。


谢谢,进一步与专家交流也建议了相同的简单解决方案。 - user1640789

1
简单的解决方案可能是在gitolite或其他支持分支锁定的系统上克隆和托管存储库,并设置一个post-commit hook来镜像到您当前的github存储库(如果您打算保留它)。我们目前正在使用github克隆进行此操作。

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