是否有一种简单的方法来配置我们的git repo,只允许预先定义的一组用户进入原始的master分支?
我发现某些工具需要为这样的任务付费,但是想知道默认情况下git是否支持这种工具,而不需要git服务器工具。
欢迎提出任何意见和指示。
答案 0 :(得分:1)
一个简单的解决方案是编写自定义挂钩来监听每个更新并拥有自定义身份验证解决方案。
在.git文件中有一个钩子目录,其中包含自定义钩子的示例实现。删除.sample后缀只会使该钩子变得可操作(默认情况下钩子示例有回调注册)。
每次推送后都会触发更新挂钩,退出1只会禁止该推送应用。有点像:
refname="$1"
oldrev="$2"
newrev="$3"
author="$(git log $newrev -1)"
# user names on the white list
whitelist=( 'Admin1' 'Admin2' 'Admin3' )
# branches to be controlled
master="refs/heads/master"
test="refs/heads/test"
if [[ "$refname" == "$master" || "$refname" == "$test" ]]
then
for name in "${whitelist[@]}"
do
echo $name
if [[ "$author" == *"$name"* ]]
then
exit 0
fi
done
else
exit 0
fi
echo "Master or test branch is not within your reach ! Contact your supervisor ! "
exit 1
我强烈建议您根据自己的身份验证政策编写自己的脚本。上面的脚本只是给出一个想法,很容易被破解。
答案 1 :(得分:0)