【问题标题】:How to lock git repos master branch?如何锁定 git repos master 分支?
【发布时间】:2012-08-27 03:00:39
【问题描述】:

我需要锁定 git repo 的 master 分支。我尝试了预提交挂钩,但它们只是客户端挂钩,但我想锁定大多数用户的主分支。谁能告诉我 git 上 pre-receive hook 的步骤(我使用 github)或任何更好的锁定 master 的方法?

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

【问题讨论】:

  • 因为 master 也是一个分支,这似乎是另一个的欺骗。
  • @MichaelDurrant 那里提供的解决方案对我不起作用,因为:我们的 github 版本不支持 gitolite。预提交钩子是一个客户端钩子(不能要求每个用户添加这个钩子)。而我正在寻找一个服务器端钩子。

标签: git hook pre-commit-hook


【解决方案1】:

授权的 GitHub 表示“GitHub:enterprise”,这也意味着,如文章“Migrating from GitHub:FI”中所述:不允许自定义挂钩
(另见“How can I add a custom git hook to a GitHub Enterprise repo?”)

所以我会以不同的方式处理这个问题,并且不在该服务器上维护一个存储库,而是两个存储库(第二个是第一个的克隆)。

每个人都可以推送到第一个,但只有选定的用户可以推送到第二个,这允许他/她从第一个存储库中选择有资格推送到第二个存储库的内容。
所以'repo2'在某种程度上代表你的'master',而'repo1'代表所有其他用户可以推送到的任何其他分支。
这个有点像这个GitHub gist article

我建议将发布工程团队分成他们自己的组织
开发人员必须对驻留在发布工程团队中的所有存储库进行分叉。
开发人员将能够在其组织内提交到master
他们必须发送拉取请求才能将他们的提交提交到release_engineering 组织。

注意:要让客户相信,提交到acme_developers/foobarmaster 分支不同于提交到acme_release_engineering/foobamaster 分支,这需要一些时间。

【讨论】:

  • 谢谢,进一步与专家交谈也提出了同样简单的解决方案。
【解决方案2】:

简单的解决方案可能是在 gitolite 或其他支持分支锁定的系统上克隆和托管存储库,并设置一个提交后挂钩以镜像到您当前的 github 存储库(如果您打算保留它)。我们目前正在使用 github 克隆来做到这一点。

【讨论】:

    猜你喜欢
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2012-05-22
    • 1970-01-01
    • 2014-09-17
    • 2013-01-14
    相关资源
    最近更新 更多