_J Blog

学んだ事のまとめやメモなどが中心です

Gitのフックスクリプトが実行されてないかも?というとき

色々原因はあると思いますが、その中の一つではまったものを紹介します。

それは

exec git update-server-info

です。
これがあるとその行以降のコマンドは実行されません。

まず最初に結論から

どうすれば良いか。 exec を消して

git update-server-info

とします。
※ http(s) ごしでリポジトリにアクセスしない場合は消してしまっても良いです。

stack over flow の記事

ちょっと説明

gitのbareリポジトリ作ったばっかりの状態のhookscriptでは

post-update.sample

#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".

exec git update-server-info

みたいな感じでなってる。

たとえば何かを編集したときに、

#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".

exec git update-server-info

echo 'hogehoge'

みたいな感じで書いちゃうと、

echo 'hogehoge'

の部分が実行されません。 それは

exec git update-server-info

があるからです。

exec コマンドとは

execに指定したコマンドを実行する。このコマンドを実行する際に、新しいプロセスを作成せずに、現在のジョブと置き換えて実行される。

というものです。

execコマンドの説明記事

ですので、

exec git update-server-info

の時点で終わってしまい、

echo 'hogehoge'

が実行されないのです。

お気をつけください。