我的任务是对 Git 进行一些更改,但未能在互联网上找到任何相关内容 - 我迫切需要指导。
我们拥有什么:
一堆分支,主要是 test
(基本上是 develop
)和 master
分支。 master
大部分时间都保持不变。
现在,我已经使用 TeamCity、Jira 和 Crucible 创建了一个持续集成环境以及自己编写的服务。
我们想要实现的目标:
- 禁止推送到
测试
- 除非是 TeamCity - 如果 id==branchName 的 Jira 问题处于错误状态,则拒绝推送功能分支
现在, ad1)我不知道这样的事情是如何实现的。我可能只是误解了 Git 助手对我说的话,但当我阅读时,我可以完全禁止,也可以完全允许。
ad2) 名义上很简单,因为我知道必须使用预推送 Hook 脚本,但它也必须放置在每个开发人员的本地 git 存储库上,或者我可以以某种方式强制执行吗?
最佳答案
正如@chicks所说,你绝对可以使用GitLab之类的东西来获得你想要的功能。用户限制(如“只有 teamcity
具有对此分支的写访问权限”)是开箱即用的,并且通常支持服务器端 Hook ,您可以使用它来实现第二个要求.
您自己当然可能实现相同的限制,只需通过 ssh 提供 git 存储库,但这需要您进行一些开发工作。一般模型为:
- 为您的
git
用户配置.ssh/authorized_keys
,以包含可用于识别与传入推送关联的用户的元数据, - 编写 Git Hook 脚本来执行每个分支的访问控制或策略实现。
到处都有做这些事情的例子;例如,this是我写的一个较旧的答案,描述了如何确保提交的电子邮件地址与连接用户的身份匹配。
使用像 GitLab 这样的预打包解决方案几乎总是比尝试自行推出更有意义。
关于linux - 执行和创建 Git 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39977618/