BTS.Trac (1.0.51.183) | 2009-07-08 20:03 |
ExcelRedmineAddIn (1.0.1) | 2009-06-15 23:07 |
ExcelTracAddIn (1.2.1) | 2009-06-15 23:09 |
OpenProj (1.4-ja-dev2) | 2009-08-14 09:02 |
ProjectTracAddIn (1.0.0) | 2009-03-14 14:30 |
TaskTrayTrac (2.0β1) | 2009-07-31 00:55 |
TicketImportTemplate (1.0) | 2009-02-03 22:55 |
TracPluginTemplateMaker (0.2) | 2009-10-11 22:59 |
VisualStudioTracAddIn (2.0 β1) | 2009-07-31 00:53 |
ここでは、Hirobeさん作、リポジトリ検索プラグインのSearchHyperEstraierを
「勝手に」修正し、trac0.12に対応、その他機能追加を行ったものについて記述してます。
※hirobeさんに許可を得てshibuya-tracのリポジトリにおきました。
最新版は「こちら」からダウンロードできます。
全文検索を行うためのプラグインです。
trac0.12対応としてマルチリポジトリに対応しています。
また、機能追加を行ってますので以下のような検索が行えます。
仕組み:バッチを使い、リポジトリのソースやコミットログ、添付ファイルやドキュメントディレクトリの内容から、
HyperEstraierのインデックスを生成します。
そのインデックスを利用し、Trac内でコマンド版cmdestを実行、その結果を表示します。
制限
インストール方法の後、構成例を挙げ、それに沿って、リポジトリ、チェンジセット、添付ファイル、ドキュメントの
それぞれの機能のセットアップを記述してます。
それぞれの機能は独立してますので、いくつかだけを有効にすることもできます。
必要な部分だけ読んでください。
設定例のファイル(makeindex.bat.sample,trac.ini.sample,updateindex.bat.sample)
やコミットログを出力するスクリプト(MkCommentFile.py)も添付してますので
ご利用下さい。
HyperEstraierのWindows版バイナリパッケージの中の
estraier.dll,qdbm.dll,mgwz.dll,libiconv-2.dll,
regex.dll,pthreadGC2.dll,estcmd.exe,estxfilt.bat,xdoc2txt.exe,zlib.dll
があればHyperEstraierを使えます。pathが通った場所においてください。
TracLightningであればインストールフォルダのbinフォルダがよいでしょう。
そしてこのプラグインを解凍、setup.pyがあるディレクトリに移動して、
python setup.py installを実行してください。
TracLightningでの使用を意識したディレクトリの構成例を示します。
c:\TracLight\projectsはtracプロジェクトやリポジトリを含むディレクトリを示しています。
ここでは、tracプロジェクト1つ(c:\TracLight\projects\trac\pj1)、
それに対応するリポジトリ2つ(c:\TracLight\projects\svn\pj1,repos2)と
ドキュメントディレクトリ1つ(c:\TracLight\projects\doc\pj1)にしてます。
c:\TracLight\searchはHyperEstraierで使用する検索用のindexデータ(casket)と、
検索される内容を入れるディレクトリです。
検索される内容としては、
を配置してます。
リポジトリからエクスポートしたソースを検索する設定です。
※tracへのリポジトリの登録は事前にしておいてください。
リポジトリのエクスポートとインデックス生成を行うバッチを作成します。
上図に沿ったバッチファイルの例を示します。
set EXPORT_FOLDER=c:\TracLight\search\repos\pj1\rep set INDEX_FOLDER=c:\TracLight\search\repos\pj1\casket set REPOS_URI=file:///C:/TracLight/projects/svn/pj1/trunk rmdir /S /Q %EXPORT_FOLDER% rmdir /S /Q %INDEX_FOLDER% svn export %REPOS_URI% %EXPORT_FOLDER% estcmd gather -cl -fx .pdf,.rtf,.doc,.xls,.ppt T@estxfilt -ic CP932 -pc CP932 -sd %INDEX_FOLDER% %EXPORT_FOLDER%
上記バッチファイルでは、冒頭部の環境変数により設定をしています。
EXPORT_FOLDER | リポジトリのエクスポート先となるディレクトリ。空のディレクトリを指定。 |
REPOS_URI | エクスポート元となるリポジトリのURI |
INDEX_FOLDER | インデックスの生成先ディレクトリ。空のディレクトリを指定。 |
適切に書き換えてご使用ください。
なお、リポジトリのエクスポートの認証は考慮してません。認証が必要であればsvn exportに適切な引数を設定してください。
通常は上記のようにtrunkなどリポジトリの一部を指定します。
(全体にしてしまうとtagsやbranchesの中身もチェックアウトしてしまいます。)
また、上記バッチファイルはフルパス指定であるため、どこにおいてもかまいませんが、
tracプロジェクトのconfディレクトリなどにおくのが管理しやすいと思います。
また上記では「.pdf,.rtf,.doc,.xls,.ppt」の拡張子のファイルしか検索しません。
.txtや.cなどテキストファイルであればestxfilt.batで呼ばれる
xdoc2txtはスルーで出しますので
「,.txt」のように-fxの後に続く拡張子の列挙の後追記してください。
この例ではpj1リポジトリのみ設定してますが、バッチファイル中の「pj1」を
「repos2」に置き換えて下方に同様の処理を書くか、別のバッチファイルを作るかすれば
対応できます。
テキストファイルでtrac.ini(上図ではc:\TracLight\projects\trac\pj1\conf配下)を開いて searchhyperestraierというブロックを追加してください。
xxx.index_path | インデックス生成パス(バッチファイルのINDEX_FOLDER) |
xxx.replace_left | 検索結果のパスの頭で削るべき文字列。 |
xxx.url_left | URLを生成する際に頭につける文字列。browse_trac=enabledの場合は/がリポジトリのルートになるようにすること。 |
browse_trac | Tracのブラウザへのリンクを作るか否か。enabled=Tracのブラウザへのリンクを作る。リポジトリソース検索共通の機能。デフォルトは'enabled'。 |
estcmd_path | 環境変数PATHが設定済みなら設定不要。estcmd.exeの絶対パス。すべての機能に共通の機能。デフォルトは'estcmd' |
estcmd_arg | デフォルトのままだと検索結果が最大10件までしか表示されません。-maxオプションで最大表示件数を指定します。 負数にすると全ての結果を表示します。 |
estcmd_encode | Windowsでは設定不要。コマンド実行時のエンコード(Pythonでの形式)。すべての機能に共通の機能。デフォルトは'mbcs' |
(元のSearchHyperEstraierを使っていた人は変更が必要です)。
index_path,replace_left,url_leftはリポジトリごとに設定できます。
例:
[searchhyperestraier] estcmd_arg = search -vx -sf -ic Shift_JIS -max -1 .index_path = C:\TracLight\search\repos\pj1\casket .replace_left = C:\TracLight\search\repos\pj1\rep .url_left = /trunk repos2.index_path = C:\TracLight\search\repos\repos2\casket repos2.replace_left = C:\TracLight\search\repos\repos2\rep repos2.url_left = /trunk
browser_tracがenabledになる場合は、登録されるURLはTracのリポジトリブラウザでRoot直下が/となるように replace_left,url_leftを調整する必要があります。
たとえば、リポジトリブラウザでRoot/trunk/test3/検索のテスト.docと表示されるファイルは、/trunk/test3/検索のテスト.docとなるように調整してください。
難しければ、何も設定せずに、検索結果として表示されたURLを見ながら調整してください。
通常、EXPORT_FOLDER=replace_left、INDEX_FOLDER=index_pathになります。
また、componentsブロックでこの機能を有効にしてください。
[components] searchhyperestraier.searchhyperestraier.searchhyperestraiermodule = enabled
「direct-svnfs」専用です。
チェンジセットはtracにも機能がありますが、
typeが「direct-svnfs」の場合、DBに取り込まれないので
検索できません。そういう場合にお使いください。
「direct-svnfs」以外のものは検索しないようにしてますので
併用していただいても大丈夫です。
※tracへのリポジトリの登録は事前にしておいてください。
コミットログを一つ一つのファイルとして出力し、インデックス生成を行うバッチを作成します。
コミットログをファイルとして出力するために、MkCommentFile.pyというスクリプトを
用意しました。
上図に沿ったバッチファイルの例を示します。
set EXPORT_FOLDER=c:\TracLight\search\changeset\pj1\rep set INDEX_FOLDER=c:\TracLight\search\changeset\pj1\casket set REPOS_FOLDER=C:/TracLight/projects/svn/pj1 for /F %%i in ('svnlook youngest %REPOS_FOLDER%') do set LASTREVISION=%%i python MkCommentFile.py %REPOS_FOLDER% %EXPORT_FOLDER% 1 %LASTREVISION% estcmd gather -cl -fx.pdf,.rtf,.doc,.xls,.ppt T@estxfilt -ic CP932 -pc CP932 -sd %INDEX_FOLDER% %EXPORT_FOLDER%
2.2.1.と同様、上記バッチファイルでは、冒頭部の環境変数により設定をしています。
EXPORT_FOLDER | コミットログが入るディレクトリ。空のディレクトリを指定。 |
REPOS_FOLDER | 対象リポジトリのディレクトリ。ここではtrunkなどの指定をしません。 |
INDEX_FOLDER | インデックスの生成先ディレクトリ。空のディレクトリを指定。 |
適切に書き換えてご使用ください。
この例ではpj1リポジトリのみ設定してますが、バッチファイル中の「pj1」を
「repos2」に置き換えて下方に同様の処理を書くか、別のバッチファイルを作るかすれば
対応できます。
trac.iniを開いて searchhyperestraierブロックに追加してください。
xxx.cs_index_path | インデックス生成パス(バッチファイルのINDEX_FOLDER) |
2.2.2.と同様、ここではdefaultリポジトリであるかを意識して設定する必要があります。
上表で「xxx」になっている部分はリポジトリ名を記述します。
ただし、defaultリポジトリであれば、何も書きません。
「.cs_index_path」のように記述します。
xxxの部分を変えて設定することでリポジトリごとに設定できます。
例:
[searchhyperestraier] .cs_index_path = C:\TracLight\search\changeset\pj1\casket repos2.cs_index_path = C:\TracLight\search\changeset\repos2\casket
また、componentsブロックでこの機能を有効にしてください。
[components] searchhyperestraier.searchhyperestraier.searchchangesethyperestraiermodule = enabled
tracのチケットやwikiの添付ファイル中の文字列検索を行うための設定です。
インデックス生成を行うバッチを作成します。
上図に沿ったバッチファイルの例を示します。この例はTrac Lightning 3.x向けです。
set INDEX_FOLDER=c:\TracLight\search\attach\pj1\casket set ATT_FOLDER=c:\TracLight\projects\trac\pj1\attachments estcmd gather -cl -fx .pdf,.rtf,.doc,.xls,.ppt,.c,.asm,.py,.txt T@estxfilt -ic CP932 -pc CP932 -sd %INDEX_FOLDER% %ATT_FOLDER%なお、Trac Lightning 4.x向けの設定は以下の通りです。
set INDEX_FOLDER=c:\TracLight\search\attach\pj1\casket set ATT_FOLDER=c:\TracLight\projects\trac\pj1\files\attachments estcmd gather -cl -fx .pdf,.rtf,.doc,.xls,.ppt,.c,.asm,.py,.txt T@estxfilt -ic CP932 -pc CP932 -sd %INDEX_FOLDER% %ATT_FOLDER%
2.2.1.と同様、上記バッチファイルでは、冒頭部の環境変数により設定をしています。
ATT_FOLDER | tracの添付ファイルディレクトリ。tracプロジェクトのattachmentsディレクトリを指定。 |
INDEX_FOLDER | インデックスの生成先ディレクトリ。空のディレクトリを指定。 |
適切に書き換えてご使用ください。
trac.iniを開いて searchhyperestraierブロックに追加してください。
att_index_path | インデックス生成パス(バッチファイルのINDEX_FOLDER) |
単純にインデックス生成パスを設定してください。
例:
[searchhyperestraier] att_index_path = C:\TracLight\search\attach\pj1\casket
また、componentsブロックでこの機能を有効にしてください。
[components] searchhyperestraier.searchhyperestraier.searchattachmenthyperestraiermodule = enabled
ドキュメントディレクトリにある指定ファイル中の文字列検索を行うための設定です。 ドキュメントディレクトリがブラウザで見られるようにhttpd.confを設定しておく必要があります。 例
Alias /doc "c:\tracpj\doc" <Directory "c:\tracpj\doc"> Options Indexes IndexOptions +FancyIndexing +NameWidth=* +SuppressDescription +SuppressIcon Allow from all </Directory>
インデックス生成を行うバッチを作成します。
上図に沿ったバッチファイルの例を示します。
set DOC_FOLDER=c:\TracLight\projects\doc\pj1 set INDEX_FOLDER=c:\TracLight\search\doc\pj1\casket estcmd gather -cl -fx .pdf,.rtf,.doc,.xls,.ppt,.c,.asm,.py,.txt T@estxfilt -ic CP932 -pc CP932 -sd %INDEX_FOLDER% %DOC_FOLDER%
2.2.1.と同様、上記バッチファイルでは、冒頭部の環境変数により設定をしています。
DOC_FOLDER | ドキュメントディレクトリ。 |
INDEX_FOLDER | インデックスの生成先ディレクトリ。空のディレクトリを指定。 |
適切に書き換えてご使用ください。
trac.iniを開いて searchhyperestraierブロックに追加してください。
doc_index_path | インデックス生成パス(バッチファイルのINDEX_FOLDER) |
doc_replace_left | 検索結果のパスの頭で削るべき文字列(バッチファイルのDOC_FOLDER)。 |
doc_url_left | URLを生成する際に頭につける文字列。 |
単純にインデックス生成パスを設定してください。
例:
[searchhyperestraier] doc_index_path = C:\TracLight\search\doc\pj1\casket doc_replace_left = c:\TracLight\projects\doc\pj1 doc_url_left = /doc/pj1
また、componentsブロックでこの機能を有効にしてください。
[components] searchhyperestraier.searchhyperestraier.searchdocumenthyperestraiermodule = enabled
trac.iniを設定したら、apacheを再起動してください。
(「サービスのアンインストール」を実行、再度「サービスのインストール」を実行。)
作成したバッチファイルを実行してください。
検索タブをクリックして、チェックボックスが表示されることを確認してください。
同様の機能と区別するため、頭に「he:」と表記してます。
he:リポジトリ,he:添付ファイル,he:チェンジセット,he:ドキュメントのうち
機能を有効にしているものが表示されているか確認してください。
リポジトリは'BROWSER_VIEW'、チェンジセットは'CHANGESET_VIEW'、
添付ファイルatt_index_pathが設定されていること、
ドキュメントはdoc_index_path,doc_replace_left,doc_url_leftが
設定されていることが表示条件です。
表示されていればチェックを入れ、適当なキーワードで検索して、結果を確認してください。
リンクをクリックして、画面がリポジトリブラウザに切り替わり、正しくそのファイルを表示していることを確認してください。
動作確認ができたら必要なバッチファイルが1日1回実行できるようにWindowsのタスクを設定してください。
2000またはXPでは、タスクの追加は、以下のように行います。
[スタート]メニューから[プログラム]-[アクセサリ]-[システムツール]-[タスク]
または
[コントロール パネル]の[タスク]
を開き、[スケジュールされたタスクの追加]をクリックします。
するとタスクウィザードが起動します。
「実行するプログラムを1つ選択してください。」のところで、
参照ボタンを押し、バッチファイルを指定してください。
「このタスクの実行」で「日単位」を選択してください。
その後、開始日時などを設定します。
最後にユーザー名とパスワードの入力を行って終了です。
完了ボタンを押すと登録されます。
もし、設定時刻を待たずにすぐ更新したい場合は、
バッチファイルを直接実行してください。