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