git hooksでMilkodeとctagsを自動的に設定
Milkode
最近Milkodeというソースコード検索ツールを使ってる。
Rubyで書かれてるし早いっぽいしお気に入り。
Milkode - 行指向のソースコード検索エンジン
git hooksで自動更新
githubからcloneしたコードは基本的にmilkodeに登録したいので、git hooks使ってclone時に追加/pull時に更新したい。
git hooks置き場
template directoryに置いておくことで、新しいgitリポジトリ生成時に勝手にコピーしてくれる。
template directoryの探索順は以下参照。
git-init(1)
デフォルトの/usr/share/git-core/templatesは触りたくないので以下を実行。
$ mkdir -p ~/.git_template/hooks $ git config --global init.templatedir '~/.git_template' #hooksはつけない
これで~/.git_template以下に置いたhookスクリプトが使われる。
使うgit hooks
git help hooksにいろいろ書いてある。
man page githooks section 5
post-checkoutでclone(ついでにブランチ切り替え)、post-mergeでpullをフックできるっぽい。
~/.git_templateに以下を置いて実行権限つけておく。
~/.git_template/hooks/post-checkout
echo "[hook]milkode add" milk add .
ctagsも更新
ctagsの生成はvim pluginのvim-tagsでやっている。
https://github.com/szw/vim-tags
タグの生成にはvim上で:TagsGenerateコマンドを実行する必要があるんだけど、git clone後にいちいちvim開きたくないのでこれもgit hooksで更新したい。
vim自体は開かずにvimのコマンドを実行するには起動プションに -c を駆使すればできるっぽい。
Vim documentation: starting
vim -c TagsGenerate -c q
ただし"Vim: Warning: Input is not from a terminal"という警告が出てしまう。
vimの標準入力がターミナルからの入力以外だと出るとのこと、フックスクリプトがどう実行されているのかわからないのでとりあえず放置。
気になるようなら普通に
ctags -R -f .git/tags
あたりを書いておけばいい気がする。