web-dev-qa-db-ja.com

更新後のフックでGitブランチ名を見つける

更新がリモートリポジトリに送信されるたびにCruiseControlに警告するプログラムを実行しています。これにはGitの更新後フックを使用しています。

どのブランチがコミットされたかを見つけて、それを使用してビルドするブランチをCruiseControlに通知できたら、すばらしいと思います。更新後フック内のブランチ名にアクセスする方法はありますか?

34
user489998

更新後フックの最初のパラメーターは完全なブランチ参照です。たとえば、「Originマスター」へのプッシュの「refs/heads/master」が表示されます。したがって、変更されたブランチを出力するだけのフックスクリプトの例は次のとおりです。

#!/bin/sh
branch=$(git rev-parse --symbolic --abbrev-ref $1)
echo Update pushed to branch $branch
exec git update-server-info

たとえば、上記をリモートリポジトリのフック/更新後ファイルに配置すると、プッシュを実行すると次のように出力されます。

% git Push Origin master
Counting objects: 5, done
Writing objects: 100% (3/3), 247 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
remote: Update pushed to branch master
To /tmp/xx/a
    e02d9cd..ab14a08  master -> master

'remote:'で始まる新しい行は、フックスクリプトによって出力されました。

45
patthoyts