wiki:TracCustomize

Trac カスタマイズメモ 0.12

このページについて

Trac 0.12 のカスタマイズに関する覚え書き。

TracJa インストールガイド 0.12 で説明している setuptools (Easy Install)IniAdminPlugin がインストールされている環境を想定している。

参考ページ

Trac オプションパッケージ

Pygments

ソースコードの強調表示 (シンタックスハイライト) を利用する場合に必要なパッケージ。

Easy Install を利用して  Pygments をインストールする。

%easy_install Pygments

ハイライト例

HTML
<html>
  <body>
    <p class="message">Hello, HTML World!</p>
  </body>
</html>
JavaScript
function printHelloWorld() {
  var message = "Hello JavaScript World!";
  document.write(message);
}
Diff (差分)

Docutils

Wiki 文法の代わりに reST (reStructuredText) を使用する場合に必要なパッケージ。

Easy Install を利用して  Docutils をインストールする。

%easy_install Docutils

reST (reStructuredText) の記述例

reST 表示
{{{#!rst
attosott.info__ では |wp-icon| WordPress [#]_ と
|trac-icon| Trac [#]_ を利用しています。

.. table:: シンプルテーブル

   ===  ===  ========
    ヘッダ    ヘッダ
   --------  --------
    1    2      3
   ===  ===  ========
    A    a    セル
    B    b    複数の行
              からなるセル
    C    c    - 項目
              - 項目
   ===  ===  ========

reST ではリンクや画像の URL, 脚注などをまとめて
文末で定義できるためソースコードが読みやすいです。

__ http://attosoft.info/
.. |wp-icon| image:: /resources/icon_wordpress.png
.. |trac-icon| image:: /resources/icon_trac.png
.. [#] オープンソースのブログ構築ツール
.. [#] オープンソースのプロジェクト管理ツール
}}}

attosott.info では wp-icon WordPress [1]trac-icon Trac [2] を利用しています。

シンプルテーブル
ヘッダ ヘッダ
1 2 3
A a セル
B b 複数の行 からなるセル
C c
  • 項目
  • 項目

reST ではリンクや画像の URL, 脚注などをまとめて 文末で定義できるためソースコードが読みやすいです。

[1]オープンソースのブログ構築ツール
[2]オープンソースのプロジェクト管理ツール

※ 詳細は Wiki 文法と reST (reStructuredText) の比較 を参照。

Trac プラグイン

TicketDeleter コンポーネント

チケットの削除を可能にするプラグイン。Trac 0.12 では  TicketDeletePlugin が統合され  TicketDeleter コンポーネントとして同梱されている。

trac.ini ファイルを編集して TicketDeleter コンポーネントを有効にする。

[components]
tracopt.ticket.deleter.TicketDeleter = enabled

※ 参考:ブラウザから TicketDeleter コンポーネントを有効にする場合。

  1. Web ブラウザで Trac にアクセスし TRAC_ADMIN パーミッションを持つユーザでログインする
  2. [管理コンソール] 画面を開く
  3. [一般設定] - [プラグイン] を選択する
    • [Trac 0.12.2.ja1] - [tracopt.ticket.deleter.*] - [TicketDeleter] をチェックして [変更を適用] を押す

TicketChangePlugin

チケットの編集を可能にするプラグイン。Trac 0.12 では標準でチケットのコメントが編集可能になったため  TicketChangePlugin は不要。Trac 0.12 のコメント編集機能ではテキストエリアの内容に応じて自動的にプレビューが更新される。

Trac Google Analytics Plugin

Trac の各ページに  Google Analytics のトラッキングコードを自動的に挿入するプラグイン。外部リンクやダウンロードリンクのトラッキングもサポート。管理者ユーザー (admin) や認証ユーザー (authenticated) のトラッキングは無効にできる。

Easy Install を利用して  Trac Google Analytics Plugin をインストールする。

%easy_install TracGoogleAnalytics

trac.ini ファイルを編集して Trac Google Analytics Plugin プラグインを有効にする。

[components]
tracext.google.analytics.* = enabled

※ 詳細は Trac Google Analytics プラグイン (修正版) の解説を参照。

MathCaptchaJa プラグイン

anonymous ユーザーが Wiki の編集やチケット登録をする際に簡単な計算問題 CAPTCHA を提示するプラグイン。 MathCaptchaPlugin の日本語対応を行った修正バージョンで、計算式の日本語化により海外スパムの排除に効果がある。管理者ユーザー (admin) および認証ユーザー (authenticated) では CAPTCHA は表示されない。

※ 解説やインストール方法については MathCaptchaJa プラグインを参照。

共通 Trac CSS

Trac のすべてのページから参照される共通スタイルシートを設定する。

~/var/trac/project/templates/site.html ファイルに次の内容を記述する。

<head py:match="head" py:attrs="select('@*')">
  ${select('*|comment()|text()')}
    <link rel="stylesheet" type="text/css" href="/resources/trac.css" />
</head>

※ スタイルシートが ~/www/resources/trac.css にある場合の記述例。各自のサイト構成に応じて link@href の値は適宜調整する。

InterTrac リンク

InterTrac リンク を設定する。

trac.ini ファイルに次の内容を記述する。

[intertrac]
hacks.title = Trac Hacks
hacks.url = http://trac-hacks.org/
trac.title = Edgewall's Trac
trac.url = http://trac.edgewall.org/

Trac 静的リソース (htdocs) へのリンク

Trac を CGI で動かしている環境では、パフォーマンス改善のため CGI 経由で取得される静的なリソースに直接アクセスされるように設定する。

www ディレクトリから Trac の静的リソースへのシンボリックリンクを作成する。

%ln -s ~/.python-eggs/Trac-0.12.2.ja1-py2.6.egg-tmp/trac/htdocs ~/www/htdocs

※ Trac のリソースがある場所は Trac のバージョンやインストール方法によって異なる場合がある。Trac 0.12 では ~/.python-eggs/ に、Trac 0.11 では ~/local/lib/python/site-packages/ に、Trac をソースコードからインストールした場合は ~/local/share/trac/ に配置される。

trac.ini ファイルに次の内容を記述する。

[trac]
htdocs_location = /htdocs

※ [管理コンソール] から設定する場合は、[trac.ini] - [trac] - [htdocs_location] に "/htdocs" を入力する。

Subversion コミットと Trac チケットの連携

Subversion のコミットメッセージと Trac のチケットコメントを連携させる。具体的には次のようなことが実現される。

  • コミット時のコミットメッセージにチケット ID を記述する
    • Trac チェンジセットのログメッセージからチケットにリンクが張られる (TracLinks によるデフォルトの挙動)
    • コミット時のコミットメッセージがチケットのコメントとして追加される
    • Subversion クライアントで表示するメッセージログから Trac チケットにリンクが張られる

trac-post-commit-hook

コミット後に処理されるフックスクリプトを作成する。

%cd ~/var/svn/repos/hooks
%wget http://svn.edgewall.org/repos/trac/trunk/contrib/trac-post-commit-hook
%cp post-commit.tmpl post-commit
%vi post-commit

post-commit ファイルの内容は次のとおり。

#!/bin/sh

REPOS="$1"
REV="$2"
TRAC_ENV="/home/[username]/var/trac/project"
BIN_DIR="/home/[username]/local/bin"

export LANG=ja_JP.UTF-8
LOG=`${BIN_DIR}/svnlook log -r $REV $REPOS`
AUTHOR=`${BIN_DIR}/svnlook author -r $REV $REPOS`

${BIN_DIR}/python ${REPOS}/hooks/trac-post-commit-hook \
-p "${TRAC_ENV}" \
-r "$REV" \
-u "$AUTHOR" \
-m "$LOG"

post-commit ファイルに実行属性を付与する。

%chmod a+x post-commit

 TracLightning はデフォルトで trac-post-commit-hook に対応しているため SVN bugtraq: 属性 を設定するだけで OK。

SVN bugtraq: 属性 (プロパティ)

TortoiseSVN などの Subversion クライアントで SVN リポジトリのルートに bugtraq: の SVN 属性を設定する。

属性名 属性値
bugtraq:url http://[username].sakura.ne.jp/trac/ticket/%BUGID%
bugtraq:warnifnoissue true
bugtraq:message (see #%BUGID%)

※ 必要であれば bugtraq:append, bugtraq:label, bugtraq:number なども設定する。bugtraq: の SVN 属性の意味については  バグ追跡システム / 課題追跡システムとの統合 を参照。

コミットメッセージの記法

ticket:1 のチケットコメントにコミットメッセージを追加する場合は "see #1" と記述する。複数のチケットに対するコミットの場合は "see #1, #2" と記述する。

※ 詳細は  trac-post-commit-hook を参照。

※ bugtraq:message 属性を利用することで "see" や "#" の入力を省略することができる。たとえば bugtraq:message 属性値が "see #%BUGID%" の場合は、チケット ID を入力するテキストフィールド (課題番号テキストフィールド) には数字のみを入力する。たとえば課題番号テキストフィールドに "1" を入力するとコミットメッセージに "see #1" が付加される。

複数のチケットに対するコミット

bugtraq:message 属性を利用して複数のチケットに対するコミットを行う際には注意が必要となる。たとえば bugtraq:message 属性値が "see #%BUGID%" の場合に課題番号テキストフィールドに "1, 2" と入力すると、コミットメッセージに付加される文字列は "see #1, 2" となり ticket:2 のチケットコメントにコミットメッセージは追加されない。

bugtraq:message 属性値 と課題番号テキストフィールドに指定する内容については次の表を参照のこと。

bugtraq:message 属性値 bugtraq:number 課題番号テキストフィールド コミットメッセージ
see #%BUGID% 指定なし or true 指定なし メッセージに手動で "see #1, #2" を付加する必要がある
see #%BUGID% false 1, #2 メッセージのみで OK
see %BUGID% 指定なし or true 指定なし メッセージに手動で "see #1, #2" を付加する必要がある
see %BUGID% false #1, #2 メッセージのみで OK