サーバー側で git フックを使用して、誰かがリモート リポジトリにプッシュするたびに、クライアントからサーバーに送信された新しいコミット メッセージをループすることは可能ですか?
各メッセージから情報を抽出する必要があり、
ハッシュ、日付、コミット作成者、ブランチ
gitフックに関する適切なドキュメントが見つかりません。コミットメッセージを取得してURLに投稿するgit post-receiveフックを読みまし た
単純なコード行が理解できません
サーバー側で git フックを使用して、誰かがリモート リポジトリにプッシュするたびに、クライアントからサーバーに送信された新しいコミット メッセージをループすることは可能ですか?
各メッセージから情報を抽出する必要があり、
ハッシュ、日付、コミット作成者、ブランチ
gitフックに関する適切なドキュメントが見つかりません。コミットメッセージを取得してURLに投稿するgit post-receiveフックを読みまし た
単純なコード行が理解できません
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
)