名前

svn switch — 作業コピーを別のURLに更新します。

用法

svn switch URL [PATH]
switch --relocate FROM TO [PATH...]

説明

このサブコマンドは自分の作業コピーを新しいURLに更新し、 複製を作ります。—そうする必要はありませんが、普通は そのURLは元になる作業コピーと共通の祖先を持ちます。 これがSubversionで作業コピーを別のブランチに移動させる方法 です。 作業コピーの切り替え項 により詳しい説明があります。

別名

sw

変更対象

作業コピー

リポジトリへのアクセス

発生する

スイッチ

--revision (-r) REV
--non-recursive (-N)
--quiet (-q)
--diff3-cmd CMD
--relocate
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR

いまvendors-with-fixから分岐した vendorsというディレクトリの 内部にいて、そのブランチの作業コピーに移りたいときには:

$ svn switch http://svn.red-bean.com/repos/branches/vendors-with-fix .
U  myproj/foo.txt
U  myproj/bar.txt
U  myproj/baz.c
U  myproj/qux.c
Updated to revision 31.

そして、元に戻りたいときには、最初に作業コピーをチェックアウトした リポジトリの場所をURLとして指定するだけです:

$ svn switch http://svn.red-bean.com/repos/trunk/vendors .
U  myproj/foo.txt
U  myproj/bar.txt
U  myproj/baz.c
U  myproj/qux.c
Updated to revision 31.

ティップ

作業コピー全体を切り替えたくない場合、その一部だけをブランチに 切り替えることもできます。

管理者はときどき、リポジトリの 「格納場所」 を変更したい と思うこともあります — 言い換えると、リポジトリの内容に変更はな くても、リポジトリの根元のディレクトリにアクセスするための URL を変え たいと思うことがあります。例えばホスト名が変更されたり、URLスキーマが 変更されたり、リポジトリパスURLの先頭部分のどこかが変更されるような場合もあるでしょう。 新しい作業コピーをチェックアウトするよりも、svn switchを使って作業コピーの中に記録されているすべての URL の 先頭部分を一括して 「書き換えて」 やるほうが良いでしょう。この置換には --relocateオプションを使ってください。ファイルには一切 修正を加えませんし、このコマンドでリポジトリにアクセスすることもありま せん。これは、Perl のスクリプトなどを使って、作業コピーの .svn/配下に対して s/OldRoot/NewRoot/コマンドを実行するのに似ています。

$ svn checkout file:///tmp/repos test
A  test/a
A  test/b
…

$ mv repos newlocation
$ cd test/

$ svn update
svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///tmp/repos'

$ svn switch --relocate file:///tmp/repos file:///tmp/newlocation .
$ svn update
At revision 3.

警告

--relocateオプションの利用には注意してください。 引数を間違って入力すると作業コピー中に意味のない URL 情報ができて しまい、作業コピー全体が利用不能になり、修復にはちょっとしたコツが 必要になってしまいます。また --relocate を 利用すべきか、すべきでないかをはっきりと完全に理解していることも 重要です。以下が原則です:

  • 作業コピーがリポジトリの 中にある新しいディレクトリ に移る場合には、単にsvn switchを使う。

  • 作業コピーは同じリポジトリのディレクトリを指しているが、リポジトリ自身の 場所が移った場合には svn switch --relocateを使う。