« 2009年5月 | トップページ | 2009年7月 »

2009年6月

2009年6月17日 (水)

Trac - MS-Project連携の状況

Shibuya.trac勉強会第4回で発表する予定のMS-Project連携の状況を少しお見せします.まずは,Tracチケットの親子関係について考える で書いた内容がどうなったのかですが,結局はその記事に書いた,「親チケットは別プロジェクト」を拡張しました.

1. 依存関係

次のものを追加します.ただし,子タスクと親タスクが同じものに依存関係がある場合,子に依存は追加しません.(MS-Projectの仕様です)

  • Tracのマイルストーンとバージョン
  • TracのマイルストーンとバージョンはMS-Projectのマイルストーン(期間0日のタスク)で登録し,設定しているチケットすべてが先行タスクになり,依存関係はFF(FinishToFinish)になります.日付が入っていれば,基準計画に設定します.

  • MasterTickets
  • ブロックされるチケットを先行タスクで依存関係はFinishToFinishで追加します.

  • カスタムフィールドのdependencies
  • InterTracリンク形式のチケットをカンマ区切りで指定します.InterTracリンク形式のチケット指定の後に括弧で囲み依存関係を追加することができ,デフォルトではFSの関係になります.依存関係はMS-Projectで指定できる4種類(FF,SF,FS,FF)です.MS-Projectを知らない人のために二つだけ説明すると,"FF"はmasterticketと同じblockの関係で,"FS"は通常の先行タスクです.

    ※ここでいうInterTracリンク形式とは"プロジェクト名:#チケット番号"の様に指定する.実際は依存関係をつけて"SampleProject:#1(FF),SampleProject:#1(FS)"のようになります.

    2. 親子関係

    カスタムフィールドにsummary_ticketを作り,InterTracリンク形式で親チケットを指定する.同じプロジェクト内の場合は#+チケット番号でもいい.

    3. 日付

    親チケットはdue_assign.due_closeに日付が入っていれば基準計画に設定します.実際の日付はすべての子チケットから自動的に設定されます.子(葉の意味)チケットはdue_assign,due_closeは実際の日付になり,baseline_start,baseline_finishが設定されていれば,基準計画が設定されます.

    実際の設定や出力を少しお見せします.

    ここで確認できるのは次の5つです.

    1. 親タスクの基準計画
    2. マイルストーンに依存関係を追加
    3. バージョンに依存関係を追加
    4. チケットの依存関係を追加
    5. チケットの親子関係

    下の三つの図の中の番号のところで確認できます.

    まずは,上位のTracプロジェクトのチケットの一覧です.

    Tp01

    子チケットがあるTracプロジェクトです.

    Tp02

    MS-Projectに取り込んでガントチャートを表示したところです.

    Tp03

    とても簡単な例を見ていただきましたが,勉強会ではもっと複雑な例を見せられるかなぁと思います.この作りなら,親子を完全に別にすることもできますので,次のような問題は回避することができるようになるのではないかと思います.

    1. サマリータスクとタスクの粒度の問題
    2. タスクとサマリータスクで扱う情報の違い
    3. 障害対応と開発作業一緒にしたくない.

    | | コメント (0) | トラックバック (0)

    2009年6月15日 (月)

    リポジトリを共有しない場合で隣のプロジェクトへコミット時のメッセージをつける

    以前の記事では,Tracのプロジェクトを共有する場合に,隣のプロジェクトにコミットメッセージをつける方法を書きましたが,チェンジセットへのリンクを少し変更すれば,リポジトリを共有しない場合でも使えることに気づきましたので,その方法について書いてみます.

    この内容はShibuya.trac勉強会第4回の発表のなかで少し触れる予定です.

    前回のものは次のようになっていましたが

    (In [1]) refs tr2:#1

    今回は次のように変更します

    (In [tr2:changeset:1 1]) refs tr2:#1

    1. プロジェクトを作成します
    Tracのコマンドプロンプトを開き次のコマンドでプロジェクトを二つ作ります.

    C:\TracLight\bin>create-project tr1
    C:\TracLight\bin>create-project tr2

    2. InterTracの設定を追加します
    次の二つのファイルの最後のところに
    C:\TracLight\projects\trac\tr1\conf\trac.ini
    C:\TracLight\projects\trac\tr2\conf\trac.ini
    次のものを追加します.

    [intertrac]
    tr1.title = Trac Test Project 1
    tr1.url = http://192.168.1.8/trac/tr1
    tr2.title = Trac Test Project 2
    tr2.url = http://192.168.1.8/trac/tr2

    3. trac-post-commit-hookを修正します.
    設定しないほかのプロジェクトには影響しないようにC:\TracLight\python-lib\trac\contrib\のtrac-post-commit-hookをコピーし,trac-post-commit-hook2を作成します.前回からの変更の概略は次のようにコミットメッセージをInterTrac形式のメッセージに変更します.

    tracproj = project[str.rfind(project,'/')+1:]
    中略

    self.msg = "(In [%s:changeset:%s %s]) %s" % (tracproj, rev, rev, chgset.message)

    前回の修正も含んだ「trac-post-commit-hook2」をダウンロード

    4. プロジェクトごとに使うかどうかを設定できるようにします
    C:\TracLight\projects\svn\tr1\hooks\post-commit.bat
    を,post-commit2.shを呼ぶために次のようにします.

    SET TRAC_LIGHT_HOME=C:\TracLight

    if not DEFINED TL_PROJECT_HOME set TL_PROJECT_HOME=%TRAC_LIGHT_HOME%\projects

    ::-----------------------------
    ::Call the TRAC post-commit hook
    ::
    SET REPOS="%1"
    SET REV=%2
    echo %1 >> c:\trac-svn.log

    FOR /F "usebackq delims==" %%i IN (`%TRAC_LIGHT_HOME%\python\python.exe -c "import sys,re;r=re.split('\\\\',sys.argv[1]);print r[len(r)-1]" %REPOS%`) DO SET PROJECT=%%i

    %TRAC_LIGHT_HOME%\bin\bash.exe %TRAC_LIGHT_HOME%/bin/post-commit2.sh "%1" %2 "%TL_PROJECT_HOME%" "%PROJECT%"

    上の変更から呼ばれるようになったファイルのC:\TracLight\bin\post-commit2.sh
    をpost-commit.shを元にして,trac-post-commit-hook から trac-post-commit-hook2に変更します

    REPOS="$1"
    REV=$2
    TL_PROJECT_HOME="$3"
    PROJECT="$4"


    LOG=`svnlook log -r $REV "$REPOS"`
    AUTHOR=`svnlook author -r $REV "$REPOS"`
    TRAC_ENV="$TL_PROJECT_HOME/trac/$PROJECT"

    $TRAC_LIGHT_HOME/python/python.exe $TRAC_LIGHT_HOME/python-lib/trac/contrib/trac-post-commit-hook2 \
       -p "$TRAC_ENV"  \
       -r "$REV"       \
       -u "$AUTHOR"    \
       -m "$LOG"

    5. 確認

    リポジトリに何か登録しコミットします

    svn co http://192.168.1.8/svn/tr1
    cd tr1
    mkdir trunk
    svn add trunk
    echo aaaaa > aaaa.txt
    svn add aaaa.txt
    svn ci -m "refs tr2:#1"

    tr2:#1をブラウザで開きます.

    Trticket01

    チェンジセットのリンク部分をクリックして,チェンジセットを確認します.

    Trticket02

    リポジトリを共有しない場合でもチェンジセットへのリンクを張ることができました.

    インストール先とか環境に依存するものは適切に設定してください.

    | | コメント (0) | トラックバック (0)

    2009年6月10日 (水)

    宣伝:Shibuya.trac勉強会第4回

    微力ながら少しでも人の目にとまればいいなということで少し宣伝しておきます.Shibuya.trac勉強会第4回が7/12に開催されます.詳細はShibuya.trac勉強会第4回でご確認願います.私は,MS-Project関係と言うかチケットの親子関係というか,そのあたりを今回で完了させるために出席します.ここまで書いちゃって,このブログの内容からすると完全にネタバレですね.バレてるならってことで,内容は,一つのリポジトリから複数のTracプロジェクトにコメントを付けられるようにpost-commit-hookを修正することで,複数のプロジェクトにまたがるようにチケットの親子関係を持たせる,その情報をMS-Projectに取り込むことで,チケットの粒度であるとか,全く種類の違うチケットの種類を一つのTracで扱うことの問題が解決するということになります.

    | | コメント (0) | トラックバック (0)

    « 2009年5月 | トップページ | 2009年7月 »