14

私の計画は git を使用して /etc の変更を追跡することですが、コミットするときに、コマンドラインに --author オプションを追加して、変更を行う人に自分自身を作成者として指定してもらいたいと考えています。

したがって、ルートとしての偶発的なコミットを停止したいと思います。

この pre-commit フックを作成しようとしましたが、機能していません。コミット行で作成者を指定しても、git var はまだルートを返しています。

AUTHOR=`git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/\1/p'`
if [ "$AUTHOR" == "root <root@localhost>" ];
then
   echo "Please commit under your own user name instead of \"$AUTHOR\":"
   echo 'git commit --author="Adrian"'
   echo "or if your name is not already in logs use full ident"
   echo 'git commit --author="Adrian Cornish <a@localhost>"'
   exit 1
fi
exit 0
4

2 に答える 2

11

v1.7.10.1 (2012 年 5 月 1 日リリース) まで、Git は、--author環境変数、コマンドライン引数、または stdin を介して Git フックで情報を利用できるようにしませんでした。ただし、コマンド ラインの使用を要求する代わりに、ユーザーにおよび環境変数--authorを設定するように指示できます。GIT_AUTHOR_NAMEGIT_AUTHOR_EMAIL

#!/bin/sh
AUTHORINFO=$(git var GIT_AUTHOR_IDENT) || exit 1
NAME=$(printf '%s\n' "${AUTHORINFO}" | sed -n 's/^\(.*\) <.*$/\1/p')
EMAIL=$(printf '%s\n' "${AUTHORINFO}" | sed -n 's/^.* <\(.*\)> .*$/\1/p')
[ "${NAME}" != root ] && [ "${EMAIL}" != "root@localhost" ] || {
    cat <<EOF >&2
Please commit under your own name and email instead of "${NAME} <${EMAIL}>":
GIT_AUTHOR_NAME="Your Name" GIT_AUTHOR_EMAIL="your@email.com" git commit
EOF
    exit 1
}

引数と同様に--author、これらの環境変数はコミットの作成者を制御します。これらの環境変数は Git の環境にあるため、pre-commitフックの環境にもあります。そして、それらはフックの環境にあるため、それらを使用するようにpre-commit渡されます。git var GIT_AUTHOR_IDENTgit commit

残念ながら、これらの変数の設定は、 を使用するよりもはるかに不便です--author。可能であれば、v1.7.10.1 以降にアップグレードしてください。

于 2012-03-09T06:13:23.210 に答える
0

以下を使用して、これをシステムの.bashrcに追加しました。

実際に su して root になり、そのシェルに住んでいる人々を捕まえることはできません (悪い!) しかし、人々が sudo を使用するだけの場合でも、私のログは役に立ちます。私も git を使用して /etc の変更ログを保持しようとしています。

#I want everyone to check in changes to /etc files, but also want their names even when they use sudo.
export GIT_COMMITTER_EMAIL=${USER}@ourcompany.co.nz
export GIT_AUTHOR_EMAIL=${USER}@ourcompany.co.nz

https://serverfault.com/questions/256754/correct-user-names-when-tracking-etc-in-git-repository-and-committing-as-root

于 2014-03-26T16:01:53.970 に答える