記載日:2010/02/11
Mac OS 10.5.8 ターミナル 2.0.2 Subversion 1.5.5

1.Subversion リポジトリのURLが変更された場合

1−1.リポジトリURL変更に伴う作業

Subversionサーバー を利用したリソース管理では、Subversionリポジトリを利用するクライアントは自分のローカルにリポジトリの内容をチェックアウトした作業コピーを持つことになります。これにより、通常はローカルだけで作業ができ、必要な時のみサーバーに接続するという運用を可能としています。

この様な仕組みであるため、ローカルの作業コピーはどこのリポジトリを参照すればよいかという情報を持っています。もし、SubversionサーバーのURLが変更された場合は、ローカル作業コピー上のリポジトリ参照情報を書き換える必要があります。ここでは、Subversionリポジトリ参照先を書き換えるためのコマンド svn switch --relocate について紹介します。

1−2.今回の想定

今回の紹介にあたり、ユーザー repos-user で利用していたリポジトリ svn://old-repos/resources/ が、svn://new-repos/resources に変更されたことを想定しました。作業コピーのチェックアウト先は /local-disk/repos-work/ としています。

項目 想定値
Subversion利用ユーザー repos-user
作業コピーのディレクトリ /local-disk/repos-work/
変更前のSubversionサーバーURL svn://old-repos/resources/
変更後のSubversionサーバーURL svn://new-repos/resources/

2.リポジトリ参照先を変更する

2−1.コマンドの確認

コマンドラインの svn クライアントでは、次のコマンドで Subversionリポジトリ の参照先を変更できます。

svn switch --relocate --username [user_name] [old_reps_url] [new_reps_url]
user_name string リポジトリへのアクセスユーザー名
old_reps_url string 現在の(古い)SubversionリポジトリのURL
new_reps_url string 変更したい(新しい)Subversionリポジトリ のURL

「--username [user_name]」の部分は省略することもできます。省略した場合は、コマンドラインを操作しているシェルのユーザー名でリポジトリへのアクセスを試みます。他にもいろいろパラメーターはありますが、ここでは必要最小限にとどめています。

2−2.コマンド実行

今回想定した内容(1−2)で実行しました。

$ cd /local-disk/repos-work/
$ svn switch --relocate --username repos-user svn://old-repos/resources/ svn://new-repos/resources/
Password for 'repos-user':
$

svn switch コマンドはカレントディレクトリに対して実行されるため、まずは cd コマンドで作業コピーのディレクトリに移動しておく必要があります。続けて svn switch コマンドを --relocate オプションを指定して実行します。

svn switch が、 --username で指定したユーザーのパスワードを求めてきます。パスワードを入力し、何も表示されずプロンプト($や#等)が返れば成功です。もし、新しいSubversionリポジトリに指定したURLが接続できないものだった場合は、「svn: Can't connect to host 'new-repos': Connection refused」の様なエラーが表示されます。エラーが表示された場合は参照先は変更されませんので、正しい設定を確認したうえで再実行する必要があります。

以上で、Subversionリポジトリの参照先を変更できました。

参考文献