3

サーバー側で git フックを使用して、誰かがリモート リポジトリにプッシュするたびに、クライアントからサーバーに送信された新しいコミット メッセージをループすることは可能ですか?

各メッセージから情報を抽出する必要があり、

ハッシュ、日付、コミット作成者、ブランチ

gitフックに関する適切なドキュメントが見つかりません。コミットメッセージを取得してURLに投稿するgit post-receiveフックを読みまし た

単純なコード行が理解できません

4

1 に答える 1

3

githooksの man ページで説明されているように、post-receive フックは、ref ごとに次の行を取得します。

<古い値> SP <新しい値> SP <参照名> LF

ここで、<old-value> は ref に格納されている古いオブジェクト名、<new-value> は ref に格納される新しいオブジェクト名、<ref-name> は ref の完全な名前です。

したがって、これを入れると.git/hooks/post-receive

#!/bin/sh
while read oldvalue newvalue refname
do
   git log -1 --format='%H,%cd,%an' $newvalue
   git branch --contains $newvalue | cut -d' ' -f2
done

このwhileステートメントは、各行をループし、行から 3 つのフィールドを変数に読み取ります$oldvalue$newvalue$refname

このgit log行は hash,date,commit author を標準出力に出力します。

git branch行はbranchを出力しようとしますecho $refname(または、形式で出力される を使用することもできますrefs/heads/master)

于 2013-06-28T18:24:58.130 に答える