Yet another git hook management tool 'git-hooker'を作ってみました

Gitのフックスクリプトの管理ツールには、Sho Kusanoさんが作ったgit hookコマンドがあって、私も使わせていただいていたんですが、自分の求めるものと微妙に違う気がしたので、自分が欲しいものを作ってみました。

git hookから引き継ぎたい長所は:

  • installでコマンド1行でフックを追加できる
  • testでフックを実行させられる

一方、git hookから改良したかった点は:

  • フックのが面倒(一度、lsでフック名を確認してから、uninstallに指定しなければならない)
  • pipのfreezeコマンドのような、フック一覧を保存する仕組みが欲しい

インストール

Pythonで書かれていて、virtualenvwrapperが必要です。

$ mkvirtualenv -p python3.2 git-hooker
$ git clone git://github.com/doloopwhile/git-hooker.git ~/.git-hooker
$ cd ~/. git-hooker
$ workon git-hooker
$ python setup.py install
$ echo 'export PATH="$HOME/.git-hooker/bin:$PATH"' >> ~/.bash_profile

使い方

hookの追加などは、git hookと同じです

$ git hooker install pre-commit http://example.com/hook.sh # script on web
$ git hooker install pre-rebase gist:0000 # gist
$ git hooker install post-commit /path/to/your-hook # local script

$ git hooker test <引数> <引数> ... # フックの実行

editコマンドでフック一覧を編集できて、フックの追加や削除ができます。

$ git hooker edit pre-commit
(viなどでファイルが開かれるので、編集して上書き)

現状

作ったばかりで、本当に役立つツールなのかも自信がありませんし、不足している機能(pip install -r 相当の処理)や、いい加減な部分(--helpの出力内容など)があるのですが、一度晒しておこうと思います。

ソースコードGithubにあります。pull request大歓迎です。