こんにちは、加藤です。誰かに振られたわけではなく自主的に、JIRA Advent Calendar 2011の17番目として参戦します。
ジラリアンとしては、1年半位前にEatwitという自社製品のiPhoneアプリの開発からJIRA+GreenHopper / Confluence / Fisheye を使い始めて、ようやくひと通りの機能が使えるようになってきたレベルです。その前はTracを使っていました。受託案件ではRedmineも使っています。
Fisheye経由でJIRAとGitを連携
エアーズではバージョン管理にGitを使っています。共有リポジトリはJIRAやFisheyeと同じサーバー(Mac mini)にgitosisというソフトウェアを使って設置してあります。プロジェクトによっては、GitHubやBitbucketも使いますが、社内にある共有リポジトリは速くて快適です。
Gitの共有リポジトリをFisheyeに登録し、JIRAのFisheye設定でJIRAプロジェクトとFisheyeリポジトリのマッピング設定をすると、JIRAとGitを連携させることができます。具体的には、GitのコミットメッセージにJIRAの課題IDを含めることで指定されたJIRAの課題のアクティビティとして各コミットが記録できるようになります。
また、Fisheye 2.7で導入されたスマートコミットを利用すると、コミットメッセージに簡単な構文を追加することで、ワークフローのトランジション、コメント、時間の記録など、JIRAの課題を自動的に更新できるようになるそうです(筆者のバージョンは2.5系なので未確認...orz)。スマートコミットについては、@g2gjさんの下記の記事が参考になると思います。
git-jiraによる課題ベースのJIRA/Git連携ワークフロー
Stéphane ÉpardaudさんがGitHubで公開している git-jira を使うと、作業の開始/終了時に良くおこなうJIRA/Gitの一連の操作を、それぞれ1コマンドでおこなうことができるようになります。あらかじめJIRA Command Line Interfaceが必要です。
% git jirabranch FOO-123
- 課題:FOO-123と同じ名前のブランチ:FOO-123を作成
- ブランチ:FOO-123にスイッチ
- 課題:FOO-123のステータスを進行中に更新
- 課題:FOO-123にコメントを追加 > "Coding started by Masakuni Kato"
% git jirafix FOO-123
- ブランチ:FOO-123にスイッチ
- ブランチ:FOO-123にブランチ:masterをrebase
- ブランチ:masterにスイッチ
- ブランチ:masterにブランチ:FOO-123をマージ
- 課題:FOO-123のステータスを解決に更新
- 課題:FOO-123にコメントを追加 > "Fix committed by Masakuni Kato"
課題に着手するごとにトピックブランチを切るというのは良い習慣ですね。作業の開始や終了時にコメントを入れるのも、他の開発者とのコミュニケーションに役立つ良い習慣だと思います。これらの手順を1つのコマンドで実行できるgit-jiraはチョー便利。オススメです。
ちなみに、jirabranchとjirafixと打つのは長くてシンドいので、筆者はそれぞれjbとjfというaliasを設定して使っています。
% git config --global alias.jb jirabranch
% git config --global alias.jf jirafix
コミットメッセージにJIRAの課題IDを含める
GitのコミットメッセージにJIRAの課題IDを含めるだけで連携することが分かっていても、開発者にお願いしただけではついつい書くのを忘れてしまいがちです。
git-jiraでは、コミットメッセージに課題IDやタイトルを自動的に含めるためのGitのフックスクリプトも提供しています。ただ、スクリプトで使われているsedやawkがMac標準のものだと動かなかったり、タイトルに日本語が含まれていると文字化けしてしまったりするので使いづらいかもしれません。
git-jira / prepare-commit-msg
https://github.com/FroMage/git-jira/blob/master/prepare-commit-msg
筆者は、いまのところブランチのチェックアウト時にブランチ名を含んだメッセージテンプレートを作成するpost-checkoutフックと、Gitの設定commit.templateの組み合わせで対応していますが、まだ研究中です。他に良い方法があれば教えてください。
まとめ
JIRAとGitの連携について簡単に紹介してみました。JIRAやConfluenceを使っていると、スペックシートだけでは解らない細かな部分での使い勝手の良さに感心することが多いのですが、いかに良いツールでもうまく活用してあげなければ宝の持ちぐされになってしまいます。
今後も、JIRAの豊富な設定や拡張機能を利用してジラリアンとしてのレベルをアップしていきたいと思います。なんといっても色々試すのは楽しいですしね。
では、引き続きJIRA Advent Calendar 2011をお楽しみください。と書きましたが次の方がまだいないみたいです。どなたか、立候補を!

