TicGitで簡単すぐにチケット管理

Web2.0といわれて久しいですが、ライフハッカーの皆様はアイデアやtodoをどのように管理されていますか?わたくしは単純にiPhoneのメモに書き留めております。最近その頻度が増えてきて、なにかもっと便利にできないものかと考えはじめました。おれおれチケット管理をする必要があるのです。HerokuにRedmineをおこうとか考えましたが、もっと簡素なもので十分。使いましょう、TicGitを。

TicGit

TicGit-ng is a simple ticketing system, roughly similar to the Lighthouse model, that is based in git. It provides a command line client that uses the ‘git’ gem to keep its ticketing information in a separate branch (called ‘ticgit-ng’) within your existing git repository. All the data is file based and rarely changing, decreasing the likelihood of a merge issue. Right now, ticket branch merges need to be done manually and separately, but work is being done on a ti sync command to make this easier and more intuitive.

https://github.com/schacon/ticgit/blob/master/README.mkd

Gitを使ったチケット管理システムがTicGitです。TicGit-ngと名前を改めて今現在も開発が続いているようです。Gitを使ったとはいうものの、TicGitが裏でgitコマンドを利用しているだけで、実際のチケット操作はすべてtiコマンドでおこないます。MOONGIFTで紹介されたりしてるので、知っている人も多いのではないでしょうか。当時すこし使ってみた*1覚えがあります。もう一度ためしてみましょう。

インストール、実行

GithubのWikiはngとなる前のまま更新されていないようで、インストールのコマンドからして違います。Wikiに従うとハマるのでREADMEを参照しながらやりましょう。

% gem install TicGit-ng
Fetching: TicGit-ng-1.0.2.4.gem (100%)
Successfully installed TicGit-ng-1.0.2.4
1 gem installed
Installing ri documentation for TicGit-ng-1.0.2.4...
Installing RDoc documentation for TicGit-ng-1.0.2.4...

% ti
No repo found

すんなり入って、すんなり動いてくれました。gitリポジトリではないところで実行すると上記のように表示されます。gitリポジトリ配下で実行するとusageが表示されます。同時に、リポジトリにticgitブランチが作成されます。
ためしにチケットを作成してみましょう。

% ti new #チケット新規作成
#エディタが開くのでチケット名を入力し、保存してとじる
I, [2011-04-25T22:27:40.209974 #3438]  INFO -- : saving 1303738060_this-is-test-ticket_231
Title: This is test ticket
TicId: c569c254326a6c581ab761dad1d126213330aa4d

Assigned
Opened: 2011-04-25 22:27:40 +0900 (0 days)
State: OPEN
Points: no estimate
Tags: 

エディタが開いてチケット名を入力させるあたり、Gitを使っている感じがしますね。要はticgitブランチにコミットしているんですね。確認してみましょう。

% git co ticgit #ticgitブランチをチェックアウト
Switched to branch 'ticgit'

% git log --pretty=oneline
6a2f7acc5e3f6a71d9c767ba231cb610c69845f0 added ticket 1303738060_this-is-test-ticket_231
5df2a32e02a54742a7d8bd98850c643f621916ec creating the ticgit-ng branch

先ほど追加したThis is test ticketがコミットされていますね。

チケットを追加するたびにエディタが開くのは煩わしいと感じるときもありますよね。git-commit -m 'message'のように済ませたい場合は次のようにします。

% ti new -t 'oh, this is also test' # -tの後にチケット名を入力(tはtitleの意)
I, [2011-04-25T22:37:02.000397 #3747]  INFO -- : saving 1303738621_oh-this-is-also-test_692
Title: oh, this is also test
TicId: 1cc8f339aa59917a8e4c1b393375e65e3bd4a3fd

Assigned
Opened: 2011-04-25 22:37:01 +0900 (0 days)
State: OPEN
Points: no estimate
Tags: 

それでは、作成したチケットを確認してみましょう。

% ti list
   TicId  Title                    State Date  Assgn    Tags                
----------------------------------------------------------------------
   c569c2 This is test ticket      open  04/25                              
   1cc8f3 oh, this is also test    open  04/25                              

チケット名、状態などが整形されて表示されます。味気ないなーと思った人は、次いこう次。

WebUI

ticgitはブラウザからチケットを一覧/操作できるWebUIを備えています。ticgitwebコマンドでサーバを起動できます。仕組みは、単純にSinatraで動いています。そのため、tiコマンドの動作環境に加えてsinatrahamlが必要となるので、入ってなければgemで入れましょう*2
f:id:marutanm:20110425224656p:image
チケット一覧。チケットの状態でフィルタできる。
f:id:marutanm:20110425224657p:image
個別チケット画面。コマンドでいうとti showに相当。ここから状態の変更やtagの管理などもできる。
新規チケットなど簡単な操作はコマンドから、閲覧やチケットIDの入力をともなう操作はブラウザからというのがいいかもしれませんね。

これだけあれば最低限どうにかなるサブコマンド
list チケット一覧をみる
new 新規チケット作成
recent 最近の状況をみる
show チケットの詳細をみる
comment チケットにコメントする
state チケットの状態を変更

サブコマンドの詳細については--helpをつけると確認できます。
他にも、チケットをアサインしたり、リモートブランチを使ってチケットを同期したりできる模様。それについてはREADMEを参照してもらえればよろしいかと。いずれ試したらエントリにしたいけれども。

感想

  • コマンド一発でチケット管理システムが導入できるのは、なかなか刺激的な印象
  • リポジトリ毎にticgitブランチが作られて管理されるので、特にリポジトリに属さないようなチケットはどうしよう
  • チケットのアサインや同期といった高度な使い方もためしてみたい
    • あまり複雑なことは素直にRedmine等を使ったほうがいいかな?
  • ticgitwebをherokuで動かしてどこからでも参照可能にできないか?
    • 要はsinatraなわけだし、わけだし、でも、うーん

*1:さらには動作させるまでに少しハマった

*2:sassも必要ですが、haml入れれば一緒に入る