2012年5月10日木曜日

git pullのhookをglobalに設定する


git pullした際にanythingのファイルリストを更新したかったのですが、
やり方分からなかったので調べました。

まずgit pullの際のhook、
post-mergeに記述すれば良いみたいです。

それからhookのglobalな設定、
git initした際のテンプレート用のディレクトリをglobalに設定すれば良いみたいです。

なので、
$ # git initの際のテンプレートディレクトリ
$ mkdir -p ~/.git_template/hooks
$ # pullした時に実行したい処理を記述
$ vi ~/.git_template/hooks/post-merge
$ chmod a+x ~/.git_template/hooks/post-merge
$ # ~/.git_templateをglobalに設定
$ git config --global init.templatedir '~/.git_template'
$ # 既存のgitにテンプレートを追加
$ cd <既存のgit>
$ git init

新規作成やクローンしたgitには最初から~/.git_template/hooksの中身が
適用されています。既存のgitにgit initして問題ないのか不安だったので調べてみたら、
既存のリポジトリにgit initを実行しても問題ないです。既存のファイルが上書きされるだけです。git initを実行する主な目的は新規に追加されたテンプレートを適用するためです。
関係ないですがanythingのファイルリストの更新については当然
rubikitchさんの記事を参考にしてます。