8. SVK ミラー作成と同期
SVK に親となるマスター リポジトリを登録します。SVK は事前に登録しておいたミラー設定によって、svm (SVK:Mirror) を使用してミラー元リポジトリから差分を取得したり、ミラー元リポジトリへ差分をコミットしたりできます。
PS temp> svk mirror //vendor/trunk http://vpn001.example.co.jp/svn/project1/trunk/ または PS temp> svk mirror /proj1/vendor/trunk http://vpn001.example.co.jp/svn/project1/trunk/
mirror コマンドは、*1 depotmap コマンドと同様に関係を登録するだけですので何もしません。使用方法もよく似ています。
svk mirror /{NAME}/{PATH} {URL}
NAME で指定されたリポジトリ内に、 PATH という階層で URL で指定したリポジトリのミラーを作成するという指定になります。depotmap で指定されたリポジトリに PATH で指定した空ディレクトリが作成されます。上記の例だと Subversion リポジトリに /vendor/trunk/ というディレクトリが作成されているはずです。*2 SVK の利用サンプルではミラー先の PATH に /mirror が利用されていることが多いですが、コマンド名とかぶってわかりにくいかもしれない&Subversion の利用例では /vendor が多いということで、Subversion は使ったことがあるけど SVK は使ったことがない人にもわかりやすいリポジトリ構造になるように、/vendor と指定しました。
[TIPS] svk mi --list ... 登録されているミラーの一覧を表示する svk mi --detach /{NAME}/{PATH} ... 登録されているミラーを解除する svk mi --relocate /{NAME}/{PATH} {URL} ... 登録先を URL に変更する
ミラーの設定を行ったら、初回のミラーリングを行います。初回のミラーリングには
といった手段が考えられます。このうち dumpfile から作成する場合は mirror コマンドで登録する際に dumpfile を指定する必要があります。*3
PS temp> svk sync //vendor/trunk または PS temp> svk sync /proj1/vendor/trunk
とすると、svm によって自動的に前回の続きから全てのリビジョンが取り込まれます。歴史のあるリポジトリに対してこれを実行するとすごいことになるので、最新リビジョンだけ取得すればよい場合は、
PS temp> svk sync --skipto HEAD //vendor/trunk または PS temp> svk sync --skipto HEAD /proj1/vendor/trunk
とします。HEAD の代わりに具体的なリビジョン番号を指定して、そのリビジョン番号からミラーリングを開始することもできます。sync コマンドに指定したオプションやネットワーク速度、親リポジトリの歴史等にもよりますが、親リポジトリのすべての変更を取得するように指定したりすると、この作業には時間がかかります。
[TIPS] svk sync --all ... 登録されている全てのミラーを最新にする
*1:省略形 mi
*2:ミラーの設定そのものは Subversion の属性で管理されています。
*3:使ったことはないのですが、svk mirror を実行する時に --bootstrap={dumpfile} と、初期登録する dumpfile を指定すればいけるはずです。