管理git - 主分支推送权限

时间:2015-03-03 11:35:39

标签: git

是否有一种简单的方法来配置我们的git repo,只允许预先定义的一组用户进入原始的master分支?

我发现某些工具需要为这样的任务付费,但是想知道默认情况下git是否支持这种工具,而不需要git服务器工具。

欢迎提出任何意见和指示。

2 个答案:

答案 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)

Git没有自己的任何权限系统。您必须使用其他内容来管理它们,例如GitLabgitolite。你也可以使用git hooks构建自己的。

相关问题