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

标签 git bash hook

我正在运行 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/

相关文章:

git - Gitlab运行器故障,HTTP 500 curl 22

linux - 将大文件拆分为较小的文件,每个文件中有 n 行

Bash:暂停并使用空格键继续执行

git - 禁用单个 git 命令的钩子(Hook)

ruby-on-rails - Rails - 如何使用特定的 git 分支启动本地服务器(瘦)

git - 为 Github 私有(private)存储库验证 Jenkins CI

git - 有没有办法回到最新的分支?

linux - Incrontab 输出到文件不起作用

windows - 为内存跟踪应用程序 Hook 调用 HeapAlloc 的僵局

c - PostMessage 和 CALLWNDHOOK,缺少注册消息?