如何解决仅允许合并具有特定名称的分支
所以我想为我的 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 举报,一经查实,本站将立刻删除。