チケット駆動開発に便利なGit-Hooksをためしてみた
id:bleis-tiftのGit-Hooksを試してみました。
http://github.com/bleis-tift/Git-Hooks
環境
- MacOXS 10.6.6
- git 1.7.3.4
$HOME/project/配下にworkリポジトリ、$HOME/repos/配下にbareリポジトリを作成します。
環境の構築手順は以下に記録しています。
git上にリポジトリを作成
適当なプロジェクトを立ち上げます。例としてHelloWorldを作成します。
Bareレポジトリを作成します。
% mkdir -p $HOME/repos/HelloWorld.git % cd $HOME/repos/HelloWorld.git
workレポジトリを作成します。
% mkdir -p $HOME/project/HelloWorld % cd $HOME/project/HelloWorld % git init
fist commit
% cd $HOME/project/HelloWorld % touch README.md % git add README.md % git commit -m 'first commit'
remoteを登録
% cd $HOME/project/HelloWorld % git remote add origin $HOME/repos/HelloWorld.git % git push origin master
チケット毎にトピックブランチを切る
redmineなどでチケットを作成したら、その作業は次のようにトピックブランチを作成して作業します。
% git branch id/1
それぞれの作業はこのブランチの中でおこないます。
上述の作業をするために便利なスクリプト
% cd $HOME/project/ % git clone https://github.com/bleis-tift/Git-Hooks
作業するレポジトリからシンボリックリンクをはっておく
% ln -s $HOME/project/Git-Hooks/common.sh $HOME/project/HelloWorld/.git/hooks/common.sh % ln -s $HOME/project/Git-Hooks/commit-msg $HOME/project/HelloWorld/.git/hooks/commit-msg % ln -s $HOME/project/Git-Hooks/pre-commit $HOME/project/HelloWorld/.git/hooks/pre-commit
% ln -s $HOME/project/Git-Hooks/update $HOME/repos/HelloWorld.git/hooks/update
そうするともうmasterへ直接commitできません。
% touch hoge % git add hoge % git commit -m 'hoeg' can't commit on master branch. please commit on topic branch.
なのでid/1に移動してからコミットします。
okamura% git checkout id/1 A hoge Switched to branch 'id/1' okamura% git commit -m 'hoge' [id/1 2c6e103] hoge refs 1 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 hoge okamura% git push local id/1 Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 262 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /Users/okamura/repos/HelloWorld.git * [new branch] id/1 -> id/1
勝手に refs 1がついてるくれるのでどのチケットに対するコミットかを簡単に知る事ができます。
% git log -1 commit 2c6e1038aff4579586a46b8985215eb410dcbd33 Author: okamuuu <okamuuu _AT_ gmail.com> Date: Sat Jan 15 22:01:25 2011 +0900 hoge refs 1