Google CodeのIssue Trackerと連動するSVNのコミットログの書き方

infoScoopinfoScoop CalendarGoogle Codeを使っています。
そして、ソースリポジトリSubversionSVN)を使っています。

Redmineなどのプロジェクト管理ソフトと同様、Google CodeのIssue TrackerもSVNのコミットログと連動することができます。
コミットログにチケット番号を書くと、そのチケットも更新されます。
詳しくはIssueTracker - support - User guide for Project Hosting issue tracker - Project Hosting on Google Codeに書いてありますが、英語だしちょっとクセがあるのでコミットログの書き方をまとめておきます。

コミットログの書き方

さて、ここから書き方を説明します。
まず、2パターンあり、それで書き方が違います。

  • ステータスをFixedにする
  • チケットの更新・新規チケット作成

ステータスをFixedにする

基本

書き方3つありますが、一つだけ覚えましょう。

何かコメント
何かコメント

Fixes issue NNN

「Fixes issue NNN」の行は他のことは書かずそれだけ書いてください。
issueは先頭大文字でも大丈夫です。

こう書いてコミットすると、NNN番のissueのStatusがFixedになります。

他の書き方は日本語だとうまくいきません。ピリオドがないとうまくいかないっぽいです。

複数同時にFixedにする
何かコメント
何かコメント

Fixes issue NNN
Fixes issue NNN

「Fixes issue NNN」を改行を入れて続ければ、複数のissueを一回のコミットでFixedにできます。

チケットの更新・新規チケット作成

ステータスをFixedにする以外のチケットの更新・新規チケット作成の基本の書き方は以下のようになります。

Your commit log message descriptive text...

COMMAND-LINE
ISSUE-FIELD-UPDATE*
COMMENT-TEXT...
  • Your commit log message descriptive text...

の部分はコミットログにだけ残るメッセージで、チケットには追加されません。

  • COMMAND-LINE

以下の3つの書き方があります。対象のチケット番号や更新か新規作成かを指定します。

    • Update issue NNN
    • New issue
    • New review
  • ISSUE-FIELD-UPDATE

チケットのタイトル、ステータス、ラベルなどを変更するときに記述します。
以下の記述方法が使えます。

    • Summary: NEW-VALUE
    • Status: NEW-VALUE
    • Owner: NEW-VALUE
    • Cc: PLUS-MINUS-LIST
    • Labels: PLUS-MINUS-LIST
  • COMMENT-TEXT

チケットを更新したときのコメントを書きます。改行できます。

これは例を見た方がわかりやすいと思います。下にいくつか例を書いたのでそちらをご覧ください。

記述例

チケットをFixedにする
Fixes  issue 67 
組織がないとユーザ検索パネルにプルダウンが表示されない
複数チケットを同時にFixedにする

複数同時にFixedにする例です。
「issue 1,2,3...」の部分は書かなくてもよいです。

issue 1,2,3のステータスを同時にFixedにする例

Fixes issue 2
Fixes issue 3
Fixes issue 1
チケットにコメントを追加する

単純にチケットにコメントを追加する例。ステータスなどは変更しない。

Update  issue 81 
タイムゾーンUTCのサーバーで空き時間検索が正常に動作しない問題を修正
サーバーでの時間の処理をクライアントのタイムゾーンに合わせるように修正
コミットログにメッセージを残し、チケットにコメントを追加する

「Issue 120...」の部分はコミットログにのみ残り、チケットには追加されません。

Issue 120: Decrease the frequency of the Ajax request to get the gadget configuration file

Update issue 120
Fixed that When login user's widgets is empty, retrieving gadget configurations is failed.
チケットのステータスを更新する
issue 2のステータスをAcceptedに変更するコミットログの例

Update issue 2
Status: Accepted
チケットのステータスをAcceptedに変更します。
チケットのラベルを更新する
issue 2のチケットのラベルを更新する例

Update issue 2
Labels: Type-Enhancement, Priority-Low
Type-Enhancement, Priority-Lowに変更する
チケットのラベルを追加する

CcとLabelsには+-記号が使えます。+をつけると追加され、-をつけると削除されます。

issue 2のチケットにラベルを追加する例

Update issue 2
Labels: +Performance
Performanceラベルを追加する
チケットのラベルを削除する
issue 2のチケットからラベルを削除する例

Update issue 2
Labels: -Performance
Performanceラベルを削除する
チケットの新規作成

コミットと同時にチケットを新規作成し、いきなりFixedにする例。

New issue
Summary: 管理画面へのリンクを追加する
Status: Fixed
Labels: Milestone-0.8-RC1
画面右上のログアウトボタンの左に管理画面へのリンクを追加する

ただ、このチケットの新規作成はコミットログからチケットへのリンクが貼られないので、あまり使えないです。
Issue Trackerでチケットを作成してから、Updateするのがやはりよいと思います。

複数チケットの更新

複数チケットを1コミットで同時に更新するのはいろいろ試したのですが、どうもできないようです。

どういうことができるか

この書き方でコミットログを書くと以下のようなことが実現できます。

チケットをFixedにする

こんな風にコミットログを書くと

そのリビジョンにもチケットへのリンクが貼られ、

チケットのステータスがFixedになり、チケットからリビジョンにもリンクが貼られます。

チケットを更新する

こんな風にコミットログを書くと

そのリビジョンにもチケットへのリンクが貼られ、

チケットが更新され、チケットからリビジョンにもリンクが貼られます。

チケットを新規作成する

こんな風にコミットログを書くと

そのリビジョンからチケットへは残念ながらリンクが貼られません。

チケットが新規作成され、チケットからリビジョンにもリンクが貼られます。