チケット駆動開発に便利なGit-Hooksをためしてみた

id:bleis-tiftのGit-Hooksを試してみました。

http://github.com/bleis-tift/Git-Hooks

環境

  1. MacOXS 10.6.6
  2. git 1.7.3.4

$HOME/project/配下にworkリポジトリ、$HOME/repos/配下にbareリポジトリを作成します。

環境の構築手順は以下に記録しています。

  1. http://d.hatena.ne.jp/okamuuu/20110116/1295146927
  2. http://d.hatena.ne.jp/okamuuu/20110115/1295058479

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

bareリポジトリにもシンボリックリンクをはる

% 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