Pre-Commitフックを使用して特定の作者によるGITコミットを停止する

StackOverflow https://stackoverflow.com//questions/9627198

  •  09-12-2019
  •  | 
  •  

質問

私の計画は、/ etcの変更を追跡するためにgitを使うことですが、コミュニケーションを行う人にコマンドラインに--authorオプションを追加して、自分自身を作家として指定してください。

だから私は根本的なコミットを根本的なコミットを止めたいと思います。

このプレコミットフックの作成を試みましたが、機能していません - git varはまだコミット行の作者を指定してもrootを返します。

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
.

役に立ちましたか?

解決

現在のバージョンのGITは、環境変数、コマンドライン引数、またはSTDINを介してGITフックでGITフックに使用できるようになりません。ただし、--authorコマンドラインを使用する代わりに、--authorGIT_AUTHOR_NAME環境変数を設定するようにユーザーに指示できます。

#!/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
}
.

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

残念ながら、これらの変数を設定することは、git commitを使用するよりもはるかに便利です。 Git開発者に連絡して、--authorフックを起動する前に、これらの環境変数を設定していることを要求してください。

他のヒント

私は以下を使用して、これをシステム.Bashrc。

それは実際に根に訴えてそのシェルに住んでいる民俗を捕まえられない、(悪い!) しかし、それは私のログがsudoを使うだけで私のログは役に立ちません。 私も/ etc changeLogをgitで保存しようとしています - 月ごとに行われたものがわかります。

#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
.

href="https://serverfault.com/questions/256754/Correct-user-names-when-tracking-etc-in-git-repository-and-committor-root"> https://serverfault.com/questions/256754/Correct-user-names-when-tracking-etc-in-git-repository-and-committory-as-root

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top