git中有两个分支,我使用gitolite进行访问控制。
分支'dev'和分支'main'。
开发人员必须提交到'dev',并合并到'main',然后推送'dev'和'main'。
我的问题是如何只允许开发人员提交到'dev',
并合并到'main',但不能直接提交到'main'。
我的意思是,如果开发人员直接将代码推送到“主”,当他们尝试推送到远程“主”时,他们将失败。
问问题
159 次
1 回答
1
gitolite 允许您添加自定义服务器端挂钩。
使用此更新挂钩添加检查:
#!/bin/bash
ref=$1
old=$2
new=$3
[[ $ref == refs/heads/main ]] || exit 0
reject(){
echo "$@"
exit 1
}
parent=$(git rev-parse $new^)
[[ $parent == $old ]] || reject not a single commit
git rev-parse $new^2 &>/dev/null || reject not a merge commit
(对于 gitolite,您必须将其放入 update.secondary 文件夹中。)
于 2013-11-06T02:00:26.877 回答