linux - 执行和创建 Git 策略

标签 linux git githooks

我的任务是对 Git 进行一些更改,但未能在互联网上找到任何相关内容 - 我迫切需要指导。

我们拥有什么: 一堆分支,主要是 test (基本上是 develop)和 master 分支。 master 大部分时间都保持不变。

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

我们想要实现的目标:

  1. 禁止推送到测试 - 除非是 TeamCity
  2. 如果 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/

相关文章:

git - 如何配置SonarQube、Sonar Runner、GitLab和Jenkins获得持续集成

githooks - 如何让 git 将分支合并回父分支

GNU/Linux 上的 Java 数据库连接

c - 如何将 C 目标文件与汇编语言目标文件链接起来?

c - 使用 SDL 播放 mp3 文件时无法识别的音乐格式

git - SourceTree 总是权限被拒绝(公钥)

git - 配置 `git pull` 使用 --ff 和 `git merge` 使用 --no-ff

c - 为什么accept()创建一个新的套接字?

git - 如何摆脱git中的本地提交?

git - 有没有办法阻止提交到远程存储库中的文件?