GitとRedmineの連携
GitとRedmineの開発環境で便利なスクリプトを見つけたのでこちらに記載します。
Git+Redmineな人におすすめのフックスクリプト集 - みずぴー日記
http://d.hatena.ne.jp/mzp/20101118/hooks
こちらで紹介されているフックスクリプトで出来ることは以下の通りです。
- masterブランチへのcommit拒否
- id/20という命名規則のブランチ(トピックブランチ)でコミットした際、コミットメッセージにrefs 20を自動で追記してくれる
なので簡単にブランチが切れるGitとチケットでプロジェクト管理ができるRedmineを
上手く連携させることが可能です。
以下、実際にインストールから検証するまでを記述します。
■インストール
使用するリポジトリの直下で作業します。
// フックスクリプトをダウンロード $ wget https://download.github.com/bleis-tift-Git-Hooks-730eedc.tar.gz ・ ・ ・ // 解凍 $ tar xvzf bleis-tift-Git-Hooks-730eedc.tar.gz // 必要なファイルを.git/hooksにコピー $ cp bleis-tift-Git-Hooks-730eedc/common.sh .git/hooks/ $ cp bleis-tift-Git-Hooks-730eedc/pre-commit .git/hooks/ $ cp bleis-tift-Git-Hooks-730eedc/commit-msg .git/hooks/
以上で終了です。簡単。それぞれのファイルは以下のことを実現してくれます。
- pre-commit : masterブランチでのコミットを拒否
- commit-msg : ブランチ名からチケットIDを取得してコミットメッセージに付加
- common.sh : 上記に必要な関数
またダウンロードファイルにある update をリモートリポジトリに設置すればIDのないブランチのpushを拒否することも出来ます。
■試してみる
masterブランチでコミット
$ git branch -a * master remotes/origin/HEAD -> origin/master // コミットを拒否される $ git commit can't commit on master branch. please commit on topic branch. $
トピックブランチでコミット
$ git checkout -b id/20 Switched to a new branch 'id/20' $ git push origin id/20 ・ ・ $ git branch -a * id/20 master remotes/origin/HEAD -> origin/master remotes/origin/id/20 $ touch test.txt $ git add test.txt $ git status # On branch id/4984 # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: test.txt # $ git commit -m "テストコミット" [id/4984 7dfa103] テストコミット 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt $ git log commit **** Author: **** Date: **** テストコミット refs 4984 ・ ・ $
無事動作を確認できました。
以下、使用してみて思ったこと。
・refs [チケット番号]をrefs #[チケット番号]にしたい
→Redmineのコミットログからチケットへの遷移が可能になる
・id/[チケット番号] の命名規則を変更したい
→個人的にですがブランチ名に/が入るのは。。
ともかくGit+Redmineで開発している方にはすごくお勧めできるスクリプトかと思います。