Changes between Version 1 and Version 2 of TracRepositoryAdmin
- Timestamp:
- Jun 17, 2013, 1:35:49 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracRepositoryAdmin
v1 v2 4 4 == クイックスタート == #QuickStart 5 5 6 * リポジトリの管理は、 "リポジトリ" (英語版では "Repository") 管理パネル、 `trac-admin` または、 [wiki:TracIni#repositories-section trac.ini] の `[repositories]` セクションで管理します 。7 * 各リポジトリの post-commit フックに `trac-admin $ENV changeset added $REPO $REV` を実行するよう設定して下さい。さらに、リポジトリのリビジョンのプロパティが変更されたときのために、 post-revprop-change フックに `trac-admin $ENV changeset modified $REPO $REV` を追加してください 。8 * `[trac] repository_sync_per_request` オプションを empty 値に設定し、リクエスト毎の同期を行なわないようにします 。9 * Subversion のフックを実行するユーザが Trac environment に対して書き込み権限を持っていることを確認して下さい。もしくは、一時的に権限を高める `sudo` のようなツールを使って下さい 。6 * リポジトリの管理は、 "リポジトリ" (英語版では "Repository") 管理パネル、 `trac-admin` または、 [wiki:TracIni#repositories-section trac.ini] の `[repositories]` セクションで管理します 7 * 各リポジトリの post-commit フックに `trac-admin $ENV changeset added $REPO $REV` を実行するよう設定して下さい。さらに、リポジトリのリビジョンのプロパティが変更されたときのために、 post-revprop-change フックに `trac-admin $ENV changeset modified $REPO $REV` を追加してください 8 * `[trac] repository_sync_per_request` オプションを empty 値に設定し、リクエスト毎の同期を行なわないようにします 9 * Subversion のフックを実行するユーザが Trac environment に対して書き込み権限を持っていることを確認して下さい。もしくは、一時的に権限を高める `sudo` のようなツールを使って下さい 10 10 11 11 == リポジトリを指定する == #Repositories … … 24 24 ||`dir` 属性はファイルシステム内におけるリポジトリのロケーションを指定します。これは以前に設定していた `[trac] repository_dir` と一致するものです。 `alias` 属性と `dir` 属性は相反する設定です。 || 25 25 ||`hidden` ||`true` に設定すると、リポジトリブラウザのインデックスのページから見えなくなります。それでもなお、リポジトリをブラウズすることはできますし、リポジトリを参照するリンクは有効です。 || 26 ||`name` ||`name` 属性はリポジトリへ通じるパスの一部を指定します。 ||27 26 ||`type` ||`type` 属性はリポジトリが使用しているバージョン管理システムのタイプを設定します。 Trac は Subversion を当初からサポートしており、プラグインを使用して他のシステムをサポートします。もし `type` 属性が指定されていなかったら、 `[trac] repository_type` オプションの値が使用されます。 || 28 27 ||`url` ||`url` 属性はリポジトリからチェックアウトするときに使用するルートのURLを指定します。指定された場合、 "リポジトリ URL" リンクがリポジトリブラウザのナビゲーションコンテキストに追加されます。 URL はツールにコピーすることができるので、ワーキングコピーを作るときに使用できます。 || 29 28 30 `name` 属性と`alias` 属性または `dir` 属性は必須項目です。他の項目はオプションです。29 リポジトリの `name` 属性と`alias` 属性または `dir` 属性は必須項目です。他の項目はオプションです。 31 30 32 31 リポジトリを追加した後、そのリポジトリのキャッシュは `trac-admin $ENV repository resync` コマンドで再同期されなければなりません。 … … 41 40 `trac.ini` でリポジトリを設定する主たる利点は、グローバルな設定から継承できることです ( TracIni の [wiki:TracIni#GlobalConfiguration グローバルな設定 ] 参照 ) 欠点は、 `trac.ini` をパースするのに使用されている `ConfigParser` クラスの制限事項として、リポジトリ名が常に小文字しか受け付けないということです。 42 41 43 下記の例では `project`, `lib` という 2 つのSubversion リポジトリが定義 されています。そして、デフォルトのリポジトリとしてエイリアスが `project` に設定されていて、hidden 属性設定されています。これは以前の Trac Environment が単一のリポジトリ ( `project` リポジトリ ) を扱っていたときの典型的な使用例です。エイリアスは設定変更前から存在するリンクが `project` リポジトリを解決できることを保証します。42 下記の例では `project`, `lib` という 2 つのSubversion リポジトリが定義し、デフォルトのリポジトリとして `project` にエイリアスが設定されています。これは以前に Trac Environment が単一のリポジトリ ( `project` リポジトリ ) だったものを、複数のリポジトリに変換した際の典型的な使用例です。エイリアスは設定変更前から存在するリンクが `project` リポジトリを解決できることを保証します。 44 43 {{{ 45 44 #!ini … … 49 48 project.type = svn 50 49 project.url = http://example.com/svn/project 50 project.hidden = true 51 51 52 lib.dir = /var/repos/lib 52 53 lib.description = This is the secondary library code. 53 54 lib.type = svn 54 55 lib.url = http://example.com/svn/lib 56 55 57 .alias = project 56 .hidden = true57 58 }}} 58 59 Note: `name.alias = target` の場合、 `name` を `target` リポジトリへのエイリアスにします。他の方法がありません。 … … 86 87 87 88 === Mercurial リポジトリ === #MercurialRepositories 88 このドキュメントを書いている時点では、 Mercurial 導入時の同期作業やフックは必要ではありません - 詳細は [ http://trac.edgewall.org/ticket/9485 本家チケット 9485] を参照して下さい。89 このドキュメントを書いている時点では、 Mercurial 導入時の同期作業やフックは必要ではありません - 詳細は [trac:#9485 本家チケット 9485] を参照して下さい。 89 90 90 91 === 明示的な同期 === #ExplicitSync … … 106 107 export PYTHON_EGG_CACHE="/path/to/dir" 107 108 /usr/bin/trac-admin /path/to/env changeset added "$1" "$2" 109 }}} 110 Note: Ubuntu では /usr/bin/trac-admin を指定せずに以下のように指定ができます: 111 {{{#!sh 112 #!/bin/sh 113 export PYTHON_EGG_CACHE="/path/to/dir" 114 trac-admin /path/to/env/ changeset added "$1" "$2" 108 115 }}} 109 116 Windows における (`post-commit.cmd`) の例: … … 127 134 Note: Subversion のフックで `trac-admin` を呼び出すことは、クライアントサイドにおいては、コミットとログの編集操作に時間がかかってしまうことになります。非同期な方法で行なうために、 `trac-admin` で始まる [http://trac.edgewall.org/browser/trunk/contrib/trac-svn-hook contrib/trac-svn-hook] を使いたいと思うかもしれません。スクリプトもまた何回もの安全性のチェックと使い方のアドバイスを行なっているので、フックを設定したりテストするのはずっと簡単なことかもしれません。まだ Windows 用の `trac-svn-hook.bat` に匹敵するものはありませんが、スクリプトは Cygwin の bash で起動することができます。 128 135 129 Subversion についてのより詳しい情報は、Subversion 本の [http://svnbook.red-bean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks フックについて] を参照して下さい。他のリポジトリのタイプでは異なったフックの設定が必要です。操作手順については、プラグインのドキュメントを参照して下さい。 136 より詳しい情報は、Subversion 本の [http://svnbook.red-bean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks フックについて] を参照して下さい。他のリポジトリのタイプでは異なるフックの設定が必要です。 137 138 Git フックは、 Git リポジトリの同期と同じように使用することができます。`.git/hooks/post-commit` に以下を追加します: 139 {{{#!sh 140 REV=$(git rev-parse HEAD) 141 trac-admin /path/to/env changeset added <my-repository> $REV 142 }}} 143 144 Mercurial では、 Trac にアクセスされるリポジトリ毎の `.hgrc` ファイルに以下を追加します。 ([trac:TracMercurial] が Trac の `plugins` ディレクトリにインストールされている場合、 [trac:source:mercurial-plugin/tracext/hg/hooks.py hooks.py] をダウンロードし、どこかアクセス可能な場所に格納してください) : 145 {{{#!ini 146 [hooks] 147 ; If mercurial-plugin is installed globally 148 commit = python:tracext.hg.hooks.add_changesets 149 changegroup = python:tracext.hg.hooks.add_changesets 150 151 ; If mercurial-plugin is installed in a Trac plugins directory 152 commit = python:/path/to/hooks.py:add_changesets 153 changegroup = python:/path/to/hooks.py:add_changesets 154 155 [trac] 156 env = /path/to/env 157 trac-admin = /path/to/trac-admin 158 }}} 130 159 131 160 === リクエスト毎の同期処理 === #PerRequestSync … … 138 167 下記の手順は、 Subversion における単一リポジトリから複数のリポジトリの設定へ変更するための典型的な移行方法になります。 139 168 140 1. `[trac] repository_dir` オプションからリポジトリのデフォルトの設定を削除する 。141 1. "メイン" となるリポジトリを名前付きのリポジトリとして登録する。142 1. メインのリポジトリを再同期する 。143 1. post-commit フックと post-revprop-change フックをメインのリポジトリに設定し、 `[trac] repository_sync_per_request` オプションに empty 値を設定します。 144 1. メインリポジトリをデフォルトのリポジトリとして、 hidden 属性と alias 属性を追加します。これは移行前に作成されたすべてのリンクがメインリポジトリを解決できることを保証します。145 1. ステップ 2,3,4 を他の ( 名前付きの ) リポジトリに対して必要に応じて繰り返します。169 1. `[trac] repository_dir` オプションからリポジトリのデフォルトの設定を削除する 170 1. メインとなるリポジトリを名前付きのリポジトリとして登録する 171 1. メインのリポジトリを再同期する 172 1. post-commit フックと post-revprop-change フックをメインのリポジトリに設定し、 `[trac] repository_sync_per_request` オプションに empty 値を設定します 173 1. デフォルトリポジトリとしてメインリポジトリに alias 属性を追加します。 (`name` は除外。つまり、`.alias = main`)。これは移行前に作成されたすべてのリンクがメインリポジトリを解決できることを保証します 174 1. ステップ 2,3,4 を他の "名前付きの" リポジトリに対して必要に応じて繰り返します 146 175 147 176 == 単一リポジトリからの移行手順 (Mercurial) == #MigrationMercurial 148 下記の手順は、 Mercurial における単一リポジトリから複数のリポジトリの設定へ変更するための典型的な移行方法になります。このドキュメントを執筆している時点では、 Mercurial 導入時の同期作業やフックは必要ではありません - 詳細は [ http://trac.edgewall.org/ticket/9485 本家チケット 9485] を参照して下さい。177 下記の手順は、 Mercurial における単一リポジトリから複数のリポジトリの設定へ変更するための典型的な移行方法になります。このドキュメントを執筆している時点では、 Mercurial 導入時の同期作業やフックは必要ではありません - 詳細は [trac:#9485 本家チケット 9485] を参照して下さい。 149 178 150 1. TracMercurial プラグインを最新バージョンにアップグレードします 。151 1. デフォルトリポジトリの設定を trac.ini の `[trac] repository_dir` オプションから削除します 。152 1. メインとなるリポジトリを名前付きのリポジトリとして追加します 。153 1. メインリポジトリをデフォルトリポジトリとして扱うための hidden 属性のエイリアスを追加します。これで確実に移行前のすべてのリンクをメインリポジトリへ向けることができるようにします。154 1. 手順 3 を繰り返して、必要に応じて他の (名前付きの) リポジトリを追加します。179 1. TracMercurial プラグインを最新バージョンにアップグレードします 180 1. デフォルトリポジトリの設定を trac.ini の `[trac] repository_dir` オプションから削除します 181 1. メインとなるリポジトリを名前付きのリポジトリとして追加します 182 1. デフォルトリポジトリとしてメインリポジトリに alias 属性を追加します。 (`name` は除外。つまり、`.alias = main`)。これは移行前に作成されたすべてのリンクがメインリポジトリを解決できることを保証します 183 1. ステップ 3 を他の "名前付きの" リポジトリに対して必要に応じて繰り返します 155 184 156 185 == トラブルシューティング == #Troubleshooting