git pull とかcheckoutで勝手にtags作成してほしかったので調べた時のをメモ。
プロジェクトのルートディレクトリ直下の.git/hooks
ディレクトリにhookさせるファイルを置けば良いんだけど毎回置くのも面倒なので勝手に作ってくれる設定
command
cd
mkdir -p .git_tmp/hooks
cd .git_tmp/hooks
touch post-commit # git commit hook
touch post-merge # git merge, git pull hook
touch post-checkout # git checkout hook
touch ctags
chmod +x *
post-
系、ctags
の中の記述は以下
post-系
#!/bin/sh
.git/hooks/ctags >/dev/null 2>&1 &
ctags
#!/bin/sh
/usr/local/bin/ctags -R .
git init
時に自動的に作成したhooksファイルが作成されるように以下を流す。
command
cd
git config --global init.templatedir '.git_tmp'
既存のgitプロジェクトにはgit init
コマンドを打てば設定したhooksが反映される。既にあるファイルは上書きされないみたいです。
vim-fugitiveを使っている場合
やらなくてもいいんだけど
vim-fugitiveはtagsの読み込み場所を追加してくれているようだ。
.git/tags
を閲覧できるようになっている。
https://github.com/tpope/vim-fugitive/blob/master/plugin/fugitive.vim#L154
tagsが普段見えないところに置ける。せっかくなのでそこに追加してあげる記述方法は以下。
ctags
#!/bin/sh
/usr/local/bin/ctags -R -f .git/tags `pwd`
参考
- [git のcommit/merge/checkoutなどのタイミングでctagsを実行するフックスクリプト #ctags #git - Qiita] (http://qiita.com/items/d9466e699d84c2a7b149)
- [Git - Git フック] (http://git-scm.com/book/ja/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-Git-%E3%83%95%E3%83%83%E3%82%AF)
- [プレインテキスト: git pullのhookをglobalに設定する] (http://tajimajunpei-blog.blogspot.jp/2012/05/git-pullhookglobal.html)
- [dotfiles/git/template/hooks at master · maxim/dotfiles · GitHub] (https://github.com/maxim/dotfiles/blob/master/git/template/hooks)