Cilを試してみた

CilというコマンドラインベースのIssue Trackerがあります。

http://kapiti.geek.nz/software/cil.html

cil is a (Distributed) Issue Tracking System backed by your VCS.

ということで、Git等のVCSとの連携を前提としたツールのようで、興味を持ったので試してみました。

Ubuntu 9.04ではaptでインストールできます。(apt-get install cil)

使い方など

プロジェクトのトップディレクトリ等でcil initコマンドを実行すると、.cilファイルとissuesディレクトリが作成されます。
.cilにはそのプロジェクトにおけるステータスや、Issueに設定できるラベルの定義を設定します。issuesディレクトリには登録されたIssueが保存されます。

cil addコマンドを実行するとエディタが立ち上がり、Issueを新規作成します。作成されたIssueにはGitのようにハッシュ値の識別子が割り当てられ、1つのIssueにつき1つのテキストファイルとしてissuesディレクトリに保存されます。

Issueの編集、ステータス変更などはedit, status等のコマンドがあるのでcil --helpを参照してください。

1つのIssueが1つのテキストファイルになっているため、issuesディレクトリをVCSで管理すればソースコードと一緒にIssue管理ができるというアプローチになっています。

わざわざ大がかりなシステムを用意する必要がなく、ソースツリーと一緒に管理してしまえるので、個人レベルのちょっとした開発ととても相性が良いのではないかと思っています。

Gitで使ってみる

Gitで管理しているプロジェクトにCilによるIssue管理を適用する場合、masterブランチでCilの管理をして、Issueに対応したトピックブランチで実際の作業をする流れが良さそうです。

  • masterブランチでIssueを作成してコミット
  • Issueに対応したトピックブランチを作成
  • トピックブランチで作業をしてmerge
  • masterブランチでIssueをClose

こうすることで、masterブランチを見れば常に最新のIssue状況が確認できるという運用が可能です。

ちょっと修正

Cilをインストールしてそのまま利用すると1つ問題があります。Issueの作成時に登録日時や更新日時が自動的に保存されるのですが、この日時のタイムゾーンがなぜかGMTに固定されています。

インストールしたディレクトリ(Ubuntu 9.04のaptで入れると/usr/share/perl5)のCIL/Base.pmの181行目と189行目のDatetime->nowしているところを修正するといいでしょう。

修正前

    my $time = DateTime->now->iso8601;

修正後

    my $time = DateTime->now( time_zone => 'local' )->iso8601;