如何阻止无效用户的git提交?

我正在运行一个
gitlab git服务器.

我的大多数用户都运行3个版本的git中的1个.

git 1.7.1(centos用户)
git 1.7.9(其他人)
git 1.8.4(mac用户)

一些用户不小心提交并以root用户身份推送代码.我需要阻止这些用户的提交.

我的预提交钩子看起来像这样:

#!/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的预提交挂钩

根据this blog,预接收和接收后挂钩没有我正在寻找的任何环境变量(GIT_AUTHOR_NAME,GIT_AUTHOR_EMAIL,GIT_AUTHOR_DATE,GIT_COMMITTER_NAME,GIT_COMMITTER_EMAIL,GIT_COMMITTER_DATE,EMAIL).

有没有办法修改这个预提交钩子来阻止旧版本的git上的root用户?

http://longair.net/blog/2011/04/09/missing-git-hooks-documentation/

最佳答案 为什么不将检查放在预接收挂钩中,即,当代码即将提交到中央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
点赞