Changes between Version 1 and Version 2 of TracRepositoryAdmin


Ignore:
Timestamp:
Jun 17, 2013, 1:35:49 PM (11 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracRepositoryAdmin

    v1 v2  
    44== クイックスタート == #QuickStart
    55
    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` のようなツールを使って下さい
    1010
    1111== リポジトリを指定する == #Repositories
     
    2424||`dir` 属性はファイルシステム内におけるリポジトリのロケーションを指定します。これは以前に設定していた `[trac] repository_dir` と一致するものです。 `alias` 属性と `dir` 属性は相反する設定です。 ||
    2525||`hidden` ||`true` に設定すると、リポジトリブラウザのインデックスのページから見えなくなります。それでもなお、リポジトリをブラウズすることはできますし、リポジトリを参照するリンクは有効です。 ||
    26 ||`name` ||`name` 属性はリポジトリへ通じるパスの一部を指定します。 ||
    2726||`type` ||`type` 属性はリポジトリが使用しているバージョン管理システムのタイプを設定します。 Trac は Subversion を当初からサポートしており、プラグインを使用して他のシステムをサポートします。もし `type` 属性が指定されていなかったら、 `[trac] repository_type` オプションの値が使用されます。 ||
    2827||`url` ||`url` 属性はリポジトリからチェックアウトするときに使用するルートのURLを指定します。指定された場合、 "リポジトリ URL" リンクがリポジトリブラウザのナビゲーションコンテキストに追加されます。 URL はツールにコピーすることができるので、ワーキングコピーを作るときに使用できます。 ||
    2928
    30 `name` 属性と`alias` 属性または `dir` 属性は必須項目です。他の項目はオプションです。
     29リポジトリの `name` 属性と`alias` 属性または `dir` 属性は必須項目です。他の項目はオプションです。
    3130
    3231リポジトリを追加した後、そのリポジトリのキャッシュは `trac-admin $ENV repository resync` コマンドで再同期されなければなりません。
     
    4140`trac.ini` でリポジトリを設定する主たる利点は、グローバルな設定から継承できることです ( TracIni の [wiki:TracIni#GlobalConfiguration グローバルな設定 ] 参照 ) 欠点は、 `trac.ini` をパースするのに使用されている `ConfigParser` クラスの制限事項として、リポジトリ名が常に小文字しか受け付けないということです。
    4241
    43 下記の例では `project`, `lib` という 2 つのSubversion リポジトリが定義されています。そして、デフォルトのリポジトリとしてエイリアスが `project` に設定されていて、hidden 属性設定されています。これは以前の Trac Environment が単一のリポジトリ ( `project` リポジトリ ) を扱っていたときの典型的な使用例です。エイリアスは設定変更前から存在するリンクが `project` リポジトリを解決できることを保証します。
     42下記の例では `project`, `lib` という 2 つのSubversion リポジトリが定義し、デフォルトのリポジトリとして `project` にエイリアスが設定されています。これは以前に Trac Environment が単一のリポジトリ ( `project` リポジトリ ) だったものを、複数のリポジトリに変換した際の典型的な使用例です。エイリアスは設定変更前から存在するリンクが `project` リポジトリを解決できることを保証します。
    4443{{{
    4544#!ini
     
    4948project.type = svn
    5049project.url = http://example.com/svn/project
     50project.hidden = true
     51
    5152lib.dir = /var/repos/lib
    5253lib.description = This is the secondary library code.
    5354lib.type = svn
    5455lib.url = http://example.com/svn/lib
     56
    5557.alias = project
    56 .hidden = true
    5758}}}
    5859Note: `name.alias = target` の場合、 `name` を `target` リポジトリへのエイリアスにします。他の方法がありません。
     
    8687
    8788=== Mercurial リポジトリ === #MercurialRepositories
    88 このドキュメントを書いている時点では、 Mercurial 導入時の同期作業やフックは必要ではありません - 詳細は [http://trac.edgewall.org/ticket/9485 本家チケット 9485] を参照して下さい。
     89このドキュメントを書いている時点では、 Mercurial 導入時の同期作業やフックは必要ではありません - 詳細は [trac:#9485 本家チケット 9485] を参照して下さい。
    8990
    9091=== 明示的な同期 === #ExplicitSync
     
    106107export PYTHON_EGG_CACHE="/path/to/dir"
    107108/usr/bin/trac-admin /path/to/env changeset added "$1" "$2"
     109}}}
     110Note: Ubuntu では /usr/bin/trac-admin を指定せずに以下のように指定ができます:
     111{{{#!sh
     112#!/bin/sh
     113export PYTHON_EGG_CACHE="/path/to/dir"
     114trac-admin /path/to/env/ changeset added "$1" "$2"
    108115}}}
    109116Windows における (`post-commit.cmd`) の例:
     
    127134Note: 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 で起動することができます。
    128135
    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
     138Git フックは、 Git リポジトリの同期と同じように使用することができます。`.git/hooks/post-commit` に以下を追加します:
     139{{{#!sh
     140REV=$(git rev-parse HEAD)
     141trac-admin /path/to/env changeset added <my-repository> $REV
     142}}}
     143
     144Mercurial では、 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
     148commit = python:tracext.hg.hooks.add_changesets
     149changegroup = python:tracext.hg.hooks.add_changesets
     150
     151; If mercurial-plugin is installed in a Trac plugins directory
     152commit = python:/path/to/hooks.py:add_changesets
     153changegroup = python:/path/to/hooks.py:add_changesets
     154
     155[trac]
     156env = /path/to/env
     157trac-admin = /path/to/trac-admin
     158}}}
    130159
    131160=== リクエスト毎の同期処理 === #PerRequestSync
     
    138167下記の手順は、 Subversion における単一リポジトリから複数のリポジトリの設定へ変更するための典型的な移行方法になります。
    139168
    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. メインのリポジトリを再同期する
     1721. post-commit フックと post-revprop-change フックをメインのリポジトリに設定し、 `[trac] repository_sync_per_request` オプションに empty 値を設定します
     173 1. デフォルトリポジトリとしてメインリポジトリに alias 属性を追加します。 (`name` は除外。つまり、`.alias = main`)。これは移行前に作成されたすべてのリンクがメインリポジトリを解決できることを保証します
     174 1. ステップ 2,3,4 を他の "名前付きの" リポジトリに対して必要に応じて繰り返します
    146175
    147176== 単一リポジトリからの移行手順 (Mercurial) == #MigrationMercurial
    148 下記の手順は、 Mercurial における単一リポジトリから複数のリポジトリの設定へ変更するための典型的な移行方法になります。このドキュメントを執筆している時点では、 Mercurial 導入時の同期作業やフックは必要ではありません - 詳細は [http://trac.edgewall.org/ticket/9485 本家チケット 9485] を参照して下さい。
     177下記の手順は、 Mercurial における単一リポジトリから複数のリポジトリの設定へ変更するための典型的な移行方法になります。このドキュメントを執筆している時点では、 Mercurial 導入時の同期作業やフックは必要ではありません - 詳細は [trac:#9485 本家チケット 9485] を参照して下さい。
    149178
    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 を他の "名前付きの" リポジトリに対して必要に応じて繰り返します
    155184
    156185== トラブルシューティング == #Troubleshooting