实施和创建Git政策

时间:2016-10-11 12:48:34

标签: linux git githooks

我的任务是改变Git,并且未能在互联网上找到任何相关内容 - 而且我迫切需要指示。

我们拥有什么: 一堆分支,主要是test(基本上是develop)和master分支。 master大多数时候都没有动过。

现在,我使用TeamCity,Jira和Crucible创建了一个持续集成环境,以及我自己编写的服务。

我们想要实现的目标:

  1. 禁止推送到test - 除非是TeamCity
  2. 如果id == branchName的Jira问题处于错误状态,
  3. 拒绝推送功能分支
  4. 现在, ad1)我不知道这样的事情是如何实现的。我可能只是误解了Git帮助者对我说的话,但是当我读到时,我可以完全禁止,或完全允许。

    ad2)名义上很简单,因为我知道必须使用预推钩子脚本,但它也必须放在每个开发人员的本地git存储库中,或者我可以以某种方式强制执行吗?

1 个答案:

答案 0 :(得分:2)

正如@chicks所说,你可以使用像GitLab这样的东西绝对获得你想要的功能。用户限制(如“只有teamcity具有对此分支的写访问权限”)可以直接使用,并且通常支持服务器端挂钩,您可以使用它来实现第二个要求。

肯定可能自己实现相同的限制,只需通过ssh提供git存储库,但它需要您的一些开发工作。一般模型是:

  • .ssh/authorized_keys用户配置git,以包含可用于识别与传入推送关联的用户的元数据,
  • 编写Git钩子脚本以执行每个分支的访问控制或策略实施。

这里和那里都有做这些事情的例子;例如,this是我写的一个较旧的答案,描述了如何确保提交时的电子邮件地址与连接用户的身份相匹配。

使用像GitLab这样的预先打包的解决方案几乎不会比试图自己动手更有意义。