2015-12-31 5 views
5

git config user.namegit config user.email$GIT_COMMITTER_NAME$GIT_COMMITTER_EMAILの組み合わせで、Gitが "コミッタ"として使用するものを予測できることがわかりました。しかし、それを行うコードを書くと、私は既にGitに入っているコードを書き直しているという気持ちになります.Gitのコードを再利用したいと思っています。Gitが使用する "committer"情報の入手方法

だから、私はgit rev-parse --git-dirを使用するのではなく.gitを探し、および/または$GIT_DIRをチェックすることを好むと同じように、私はいつもNAME <EMAIL>文字列を取得するためにgit show-me-the --committerのようなコマンドを使用したいと思います。しかし私はマニュアルでこれを見つけることができませんでした。

+0

Hackishですが、コミットしてその情報をダンプすることができます –

+1

'git commit-tree'を使ってコミットを作成しても、refを更新しないようにすることもできます:' git show -s --format = '%cn <%ce> '$(gitコミットツリー$(git書き込みツリー) hvd

答えて

8

あなたはgit varコマンドを使用することができます。

git var GIT_COMMITTER_IDENT 

これは、任意のGitのworktreeの外で実行形式name <email> timestamp timezoneでコミッターの情報を印刷し、コミットするときにも実行されます同じGitのコードを使用することができ、構成キーと環境変数を尊重します。この情報で何をしたいかによって、タイムスタンプとタイムゾーンを除外する必要があります。

+0

良い発見。私はbashで文字列をアセンブルし、 'git config'コマンドの出力を挿入していましたが、これはずっと簡単です。 –

+0

これは追加情報をフィルタリングします: 'git var GIT_COMMITTER_IDENT | sedの/>.*/>/ ''で、元の答えは@hvdになります。 –

+0

または 'git var GIT_COMMITTER_IDENT | awk '{NF- = 2; print} ''、または' committer = $(git var GIT_COMMITTER_IDENT);コミッター= $ {コミッター%\> *} \> '、または他の多くの方法のいずれかを使用します。 :) – hvd

関連する問題