2007-06-10

λ Tracの重要度記述

Tracの重要度 ってどう使っていいのかいまいち掴めない。 基本優先度順でやっつけるので。

なんで「重要度」という名称は無視して、作業分量見込みを入れるというのはどうか。

1. 2日以上かかる
2. 1日
3. 4時間
4. 2時間
5. 1時間以下

2日以上かかるネタは1チケットでそのまま対処するのは重いだろうし。重要度というよりチケットの重さですな。 今かかわってる本業はリリース間近の終盤戦なんだけど、ちょっとこんなんを入れてみる。

λ https で Subversion生活 コミッタ設定

PKIな証明書ラブ生活には概ね満足はしているのだが、クライアント証明書認証、mod_dav_svn 経由で Subversion にアクセスしても、 ユーザ名をひろってくれないので trac で見るとチェンジセットに対するコミットした人は全部 None。 という悲しい運用状況である。

その直後にチケットに対して「[1234]で直したよーん」とメッセージ書くので、その時すぐに発生した不具合だったら悪者は分かるんだけど、 将来 svn blame に出てこないと悪者が特定しずらいかもしれん。

mod_dav_svn に手をいれてクライアント証明書の CommonName を拾うのがベスト。 そしてWindowsで発行していると、この CommonName が日本語だったりするわけで、先は長い。

…と書いた直後にちょっと調べたら SSLUserName Directive とかありましたよ。ググると mod_python で問題発生の話とかも出てくるが、設定してみる。 (つーかmod_python - tracの側じゃなくて mod_dav_svn の側だから関係ない。)

うお! 「22:37 チェンジセット [1234] が 上美谷 によってコミットされました」になった。素晴らしい。

Apache 2.2.4 向け httpd.conf の断片:

##### SubVersion Repository (WebDAV)
<Location /tako-project-svn>
    DAV svn
    SVNPath "/home/tako/svn"
    SVNIndexXSLT "/svnindex.xsl"
    SSLRequireSSL
    SSLVerifyClient require
    SSLUserName SSL_CLIENT_S_DN_CN
    <Limit GET HEAD PROPFIND OPTIONS REPORT>
        # Read用の承認設定 / ここでは受け入れ可能な証明書持ってたらOKにしている
        Order allow,deny
        Allow from all
    </Limit>
    <Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK MKACTIVITY CHECKOUT MERGE>
        # Write用の承認設定 / ここでは受け入れ可能な証明書持ってたらOKにしている
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET HEAD PROPFIND OPTIONS REPORT PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK MKACTIVITY CHECKOUT MERGE>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Location>

この httpd.conf の断片は、/usr/local/etc/apache22/Includes に独立したファイルとして置いている。 apache22の流儀は機能ごとにファイルを分割できていて管理は楽になってると思う。

tracの方で同じことやったら、tracがユーザ名読み込むとこで失敗した。

Python Traceback
Traceback (most recent call last):
  File "/usr/local/lib/python2.4/site-packages/trac/web/main.py", line 387, in dispatch_request
    dispatcher.dispatch(req)
  File "/usr/local/lib/python2.4/site-packages/trac/web/main.py", line 183, in dispatch
    req.perm = PermissionCache(self.env, req.authname)
  File "/usr/local/lib/python2.4/site-packages/trac/perm.py", line 263, in __init__
    self.perms = PermissionSystem(env).get_user_permissions(username)
  File "/usr/local/lib/python2.4/site-packages/trac/perm.py", line 227, in get_user_permissions
    for perm in self.store.get_user_permissions(username):
  File "/usr/local/lib/python2.4/site-packages/trac/perm.py", line 117, in get_user_permissions
    if user in subjects:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
本日のツッコミ(全2件) [ツッコミを入れる]
λ discypus (2007-06-10 15:13)

自分も以前は重要度をそういう使い方していました。
http://discypus.jp/wiki/?%A5%BD%A5%D5%A5%C8%2FBug%20Tracking%2Ftrac%2F%A5%E1%A5%E2#Naming

いまはTrac Projectに合わせてます (注意:tracのデフォルトとは異なる)。
作業見積もりはTimingAndEstimationPluginを入れて「Estimated Number of Hours」項目を使っています。

重要度と優先度については、以下のページが参考になるかと。
http://geekswithblogs.net/srkprasad/archive/2004/08/20/9961.aspx

λ 上美谷 (2007-06-10 17:40)

TimingAndEstimationPlugin そんなものが。
TracBurndown との組み合わせはすごいよさそうですね。

ガントチャートっぽいものが出ると、スケジュール管理している
人にはもう少しうれしいのかもしれませんが、
とりあえず上の2つチャレンジしてみます。

ありがとうございます。

[]