我正在运行 gitlab混帐服务器。
我的大多数用户都在运行 3 个版本中的 1 个版本。
git 1.7.1 (centos 用户)
git 1.7.9(其他人)
git 1.8.4(mac 用户)
有些用户不小心以根用户身份提交和推送代码。我需要阻止这些用户的提交。
我的预提交 Hook 如下所示:
#!/bin/bash
if [[ $GIT_AUTHOR_NAME == 'root' ]]
then
echo "If you commit as root, you're gonna have a bad time";
echo "Set 'git config user.name' and try again";
exit 1;
fi
这在 1.7.9 和 1.8.x 但不是 1.7.1 上用作预提交 Hook
根据 this blog ,接收前和接收后 Hook 没有我正在寻找的任何环境变量( GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_AUTHOR_DATE, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_COMMITTER_DATE, EMAIL
)。
有什么方法可以修改这个预提交 Hook 以在旧版本的 git 上阻止 root 用户?
http://longair.net/blog/2011/04/09/missing-git-hooks-documentation/
最佳答案
为什么不将检查放在预接收 Hook 中,即,当代码将要提交到中央 git 存储库/服务器时,在服务器端进行身份验证。
#Extract commiter names here.
commiters=$(git log --pretty=format:"%cn" $revs) #This should work in all git versions
printf "$commiters\n" | while read name; do
if [[ $name == "root" ]]; then
echo "You are commiting as root user which I don't like. Reveal your identity!"
exit 1
fi
done
关于git - 如何阻止无效用户的 git 提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22491942/