着信タグに基づいてCDNスタイルのディレクトリ構造を作成するgitフックを設定したいと思います。したがって、たとえば、ローカルリポジトリの最後のタグが「v1.2.1」で、「v1.2.2」でコミットをプルすると、新しいタグが表示され、リポジトリが新しいものに直接複製されます(../1.2 .2)それに応じて。
これをポストレシーブに添付したいと思っていますが、受信タグの読み取り方法に関するgitフックに関するドキュメントには何も見つかりません。それらは別のフックで配信されますか?新しいコミットに新しいタグがあるかどうかを確認するために、実際にシェルスクリプトでgitコマンドを実行する必要がありますか?
ありがとう!
タグは他のタグと同じように(コミットのように)参照です。
タグが 受信後フック でリポジトリにプッシュされると、そのフックが呼び出され、更新されたすべての参照、つまり、のすべての参照の古い値と新しい値の両方が一覧表示されます。それらの名前に加えて(標準入力で)。
このサーバーを参照してください 受信後の電子メール フックなど。
#!/bin/sh
. $(dirname $0)/functions
process_ref() {
oldrev=$(git rev-parse $1)
newrev=$(git rev-parse $2)
refname="$3"
set_change_type
set_rev_types
set_describe_tags
case "$refname","$rev_type" in
refs/tags/*,tag)
# annotated tag
refname_type="annotated tag"
function="atag"
short_refname=${refname##refs/tags/}
# change recipients
if [ -n "$announcerecipients" ]; then
recipients="$announcerecipients"
fi
;;
esac
}
while read REF; do process_ref $REF; done
これを機能させるには、前述のフックリポジトリの例から 関数ファイル をインストールする必要もあります。