Tracの最近のブログ記事

Trac の次のバージョン(0.11.x)より Workflow という仕組みが実装され、ステータスの状態遷移をある程度、自由に変えられるようになります。

今のところ Workflow を使うには Trac の Subversion の trunk

http://svn.edgewall.com/repos/trac/trunk/

から update するか、sandbox/testing

http://svn.edgewall.com/repos/trac/sandbox/testing/

から update する。もちろん日本語版を使っていても、update すると全て英語に戻ってしまいます(戻ってしまいました(笑))

update の方法は様々なサイトで紹介されているので割愛して、ここでは実際のステータスの状態遷移の設定を紹介。

[ticket-workflow]
 accept = new -> assigned
 accept.operations = set_owner_to_self
 accept.permissions = TICKET_MODIFY
 
 approve = resolved -> closed
 approve.operations = set_resolution
 approve.permissions = TICKET_MODIFY
 
 leave = * -> *
 leave.default = 1
 leave.operations = leave_status
 
 reassign = new,assigned,reopened,resolved -> *
 reassign.operations = set_owner
 reassign.permissions = TICKET_MODIFY
 
 reopen = closed,resolved -> reopened
 reopen.operations = del_resolution,set_owner
 reopen.permissions = TICKET_CREATE
 
 resolve = new,assigned,reopened -> resolved
 resolve.operations = set_resolution,set_owner
 resolve.permissions = TICKET_MODIFY

ミソは開発者が修正が終わってresolveすると、すぐに closed になるのではなく resolved というステータスになる。その際、テスト担当者が決まっている場合同時に担当者の変更も可能(hogehoge.operation の後ろに action をカンマで区切って書けばよい。operationsの種類はこちらを参照)

同様にテスト不合格で reopen する際もステータスを reopened に戻すと同時に、担当者を開発担当者に変更できるという案配。

数日前からこのフローで運用してますが、テストステータスを明確にできるので、管理しやすく感じる。

以前Tracのテーブル定義を紹介しましたが、これを調べた理由は、まだ完了していないマイルストーンに含まれる解決済みを含む全てのチケットを表示するレポートが欲しかったから。

特に難しい事は何もないのでSQLさえ書ければ、他のレポートのQueryを参考に誰でもできるでしょうが、せっかくなので公開しておきます。

SELECT p.value AS __color__,
    t.milestone AS __group__,
    (CASE status 
       WHEN 'closed' THEN 'color: #777; background: #ddd; border-color: #ccc;'
       ELSE 
         (CASE owner WHEN '$USER' THEN 'font-weight: bold' END)
     END) AS __style__,
    id AS ticket, summary, component, status, 
    resolution,version, t.type AS type, priority, owner,
    changetime AS modified,
    time AS _time,reporter AS _reporter
   FROM ticket t
   LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
   INNER JOIN milestone m ON m.name = t.milestone
   WHERE m.completed = 0
   ORDER BY (milestone IS NULL), milestone, (status = 'closed'), 
         (CASE status WHEN 'closed' THEN modified ELSE (-1)*p.value END) DESC

新しいレポートの追加のしかたは「チケットを見る」で「レポート一覧」に行き、「レポートの登録」をクリックし、「レポート名」「レポートについての説明」を適当に入力し、「レポートのSQL」に上記SQLを貼付けて「保存」します。

これで「レポート一覧」ページに新しいレポート種類が追加されたはずです。

CentOS 4.3とyumとsqlite

| コメント(2)

先日、tracのDB定義をsqliteのコマンドで直接参照するというのを書いたのですが、この時、sqliteのコマンドラインツールが入っていなかったため、yumを使ってインストールした。

これが良くなかったようで、今朝からtracに接続できなくなっていた。なぜ今朝からかというと、金曜の夜に一度ブレーカが落ちてtracを運用しているサーバを再起動したので、httpサーバ(さらに詳しく言うとmod_python)の読むライブラリがその時から新しくなり、その後、誰もアクセスしなかったため、今朝気付いた訳です。
#ブレーカが落ちるオフィスというのもアレですが(苦笑)

現象はhttpdがメモリをどんどん食いつぶしてメモリーエラーで落ちる。落ちるまでの間ロードアベレージもCPU使用率もバンバン上がる。最初はHDDのせいか?メモリ不良か?とハードを疑った(ブレーカー落ちの不正終了もあったので)のですが、他のサービスは問題なく動いているため、とりあえず、yum updateしてみた。

すると、こっちも落ちる。

# yum update
 Setting up Update Process
 Setting up repositories
 Reading repository metadata in from local files
 Traceback (most recent call last):
   File "/usr/bin/yum", line 29, in ?
     yummain.main(sys.argv[1:])
   File "/usr/share/yum-cli/yummain.py", line 97, in main
     result, resultmsgs = do()
   File "/usr/share/yum-cli/cli.py", line 471, in doCommands
     return self.updatePkgs()
   File "/usr/share/yum-cli/cli.py", line 949, in updatePkgs
     self.doRepoSetup()
   File "/usr/share/yum-cli/cli.py", line 75, in doRepoSetup
     self.doSackSetup(thisrepo=thisrepo)
   File "__init__.py", line 260, in doSackSetup
   File "repos.py", line 287, in populateSack
   File "sqlitecache.py", line 96, in getPrimary
   File "sqlitecache.py", line 83, in _getbase
   File "sqlitecache.py", line 76, in getDatabase
   File "sqlitecache.py", line 49, in loadCache
   File "/var/tmp/python-sqlite-root//usr/lib/python2.3/site-packages/sqlite/main.py", line 244, in execute
 MemoryError

これでsqliteのバージョンが合ってない事に気付きました(遅い)最後に行った設定変更をまず疑うのが基本でした。

OSはCentOS 4.3なので、RPMを探すとsqlite-3.2.2-1.i386.rpmである。金曜に入ったsqliteは、sqlite-3.3.3-1.2。

# wget http://ftp.riken.jp/Linux/centos/4.3/os/i386/CentOS/RPMS/sqlite-3.2.2-1.i386.rpm
 # rpm -Uvh --oldpackage sqlite-3.2.2-1.i386.rpm

これで無事yumも起動、tracにもアクセスできるようになりました。ここのCentOSのバージョンも上げたいところだなぁ。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちTracカテゴリに属しているものが含まれています。

前のカテゴリはToolsです。

次のカテゴリはtuningです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。