微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅允许合并具有特定名称的分支

如何解决仅允许合并具有特定名称的分支

所以我想为我的 GitHub 存储库创建一些规则/限制,根据我所读到的,最好的方法是使用 git hooks。使我难以创建的限制如下:我想阻止将任何分支合并到 master 但名称中包含“Release”的分支,或者换句话说:仅当它是一个发布分支时才允许合并到 master。我试图做一个 python 脚本,但问题是 sys.argv 给了我钩子的路径(.git/hooks/pre-merge-commit)而不是命令参数,所以我不知道如何接受输入从命令行以验证它是否是正确的分支

#!/bin/python
import sys,subprocess,re

print('inside script')

mergingBranch='Release'
protectedBranch='master'
 
print(len(sys.argv))

解决方法

doc about pre-merge-commit 声明(强调我的):

预合并提交

这个钩子由 git-merge[1] 调用,可以通过 --no-verify 选项绕过。 它不接受任何参数,在合并成功执行之后,在获得建议的提交日志消息之前调用以进行提交。

所以你必须查看你的 repo 的状态来获取你的信息:

  • 您可以使用 git rev-parse --abbrev-ref HEAD
  • 获取活动分支的名称
  • 据我所知,合并分支的名称并没有直接存储在文件中,
    我所知道的最接近的事情是使用:
git branch --points-at MERGE_HEAD
# or use for-each-ref,which has a stabler output for scripts :
git for-each-ref --points-at MERGE_HEAD
git for-each-ref --format="%(refname:lstrip=2)" --points-at MERGE_HEAD

如果您从 git merge Release/feature 运行 master

  • 第一个命令应该返回 master
  • 第二个应该返回 Release/feature

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。