Git hookでctagsを作成する

プログラムを書いてて、クラスやメソッドにジャンプするため、vim + ctagsでやってます
手動で

$ ctags -R

とかして、ctagsを生成してましたが、Git操作時にctagsを生成するようにしてみました

Gitのフックを使って、ctagsを生成してみました
tpope/vim-fugitiveを使っているので、
.git/tags
を勝手に参照してくれる環境です

Git hook用のtemplateファイルを用意します

ディレクトリを作って
$ mkdir -p ~/.git_template/hook

Gitに設定しておきます
$ git config –global init.templatedir ‘~/.git_template’

これで、git init 時に.git/.git_templateがコピーされます

hook用のスクリプトを用意

$ ~/.git_template/hook/ctags

#!/bin/sh
set -e
PATH="/usr/local/bin:$PATH"
dir="`git rev-parse --git-dir`"
git ls-files | ctags -R -f "$dir/tags"

後はhook用のファイルをそれぞれ用意

$ vim ~/.git_template/hook/post-checkout

#!/bin/sh
.git/hooks/ctags >/dev/null 2>&1 &

中身が同じものを、

  • ~/.git_template/hook/post-commit
  • ~/.git_template/hook/post-merge

も用意します
これで、commit時とかcheckout時とかにctagsファイルのスクリプトが呼び出され、ctagsコマンドが実行されます
つまりは、.git/tagsファイルが生成されます

できてるかどうかは
.git/tags
をエディタで開いてみると確認できます

参考
tbaggery – Effortless Ctags with Git
ctags – gitのhookでtags作成 – Qiita