kondoumh のブログ

- とあるソフトウェアエンジニアのめったに更新されないブログ -

InterTrac リンクで、他プロジェクトのリポジトリーツリーへのリンクを記述する

TracWiki や チケットには、TracLinks の機能で、チケット、チェンジセット、Wiki ページへのリンクが簡単に貼れることは有名だと思います。リポジトリーのディレクトリーやファイルにも、リンクが貼れて、

source:<ファイル/ディレクトリーへのパス>

の形式でリンクを貼れます。/doc/trunk/foo 配下の bar.txt というファイルへのリンクは

source:doc/trunk/foo/bar.txt

のようにかけます。リポジトリーのパスを URL で記述してもいいのですが、日本語が含まれるパスはURLエンコードされて読めないし、サーバー名が変わるとリンクが切れちゃいます。source を使ったほうがメンテも楽でスマートです。
ちなみに、Word 文書などのバイナリーファイルはブラウザーで見ても嬉しくないので、export を使って

export:doc/trunk/foo/bar.doc

のように書けば、ダウンロードを強制できます。

Wiki や サイトへのリンクと同様 角括弧[] でタイトルのみの表示も可能です。

[source:doc/trunk/foo/bar.txt 読んでね]

ファイルのパスに空白(スペース)が含まれる場合は、クォーテーションする必要があります。シングルでもダブルでもOKです。

source:'doc/trunk/foo/hoge hoge/bar.txt'

開発プロジェクトが、大規模になると、Trac/SVN プロジェクトを1つで運用するより、サブシステム毎に設置することも多いと思います。
InterTrac リンク を使えば、他のTracのチケット、チェンジセット、Wiki ページへリンクを貼ることができます。詳細は↓
http://trac.edgewall.org/wiki/InterTrac

別のTracプロジェクトが http://hostname/OtherProject にあったとして、trac.ini の [intertrac] セクションに、

other = OtherProject
OtherProject.url = http://hostname/OtherProject

のように書いておけば、other:#12 あるいは OtherProject:#12 書くことで OtherProject のチケット #12 にリンクが貼られます(other は OtherProject の短縮名)。Subversion でコミットコメントに refs 指定することも可能ですので、複数Trac プロジェクトにコミットコメントを残すこともできます。


さて、InterTrac リンクはとても便利なのですが、他のプロジェクトのリポジトリー/ディレクトリーへのリンクを記述するときにパス文字列に空白が混ざっていると、うまくリンクしてくれません。

other:source:'doc/trunk/foo/hoge hoge/bar.txt'

表示結果) other:source:'doc/trunk/foo/hoge hoge/bar.txt'
source 自体もクォートすれば無事にリンクされます。

other:"source:'doc/trunk/foo/hoge hoge/bar.txt'"

表示結果) other:"source:'doc/trunk/foo/hoge hoge/bar.txt'"
外側と内側は異なる引用符で記述する必要があります。

f:id:kondoumh:20160410113556p:plain