web-dev-qa-db-ja.com

SVN SwitchRelocate-リポジトリのルートではありません

作業用コピーフォルダーを古い専用のsvnサーバーから、サブフォルダー内に含まれている新しいsvnサーバーに移動しようとしています。次のrelocateコマンドを使用します。

svn switch --relocate https://oldserver/svn/repos https://newserver/some/directory 

私は得る:

svn: 'https://newserver/some/directory ' is not the root of the repository

どちらが正しいか.....しかし、エラー、どうすれば場所を移動できますか?

20
Jon Hadley

私の知る限り、svn switch--relocateの有無にかかわらず)を使用して新しいリポジトリに移動することはできません。このように考えてください。新しいリポジトリのHEADリビジョンはx、古いリポジトリのリビジョンはyです。では、SVNは作業コピーのベースリビジョンをどのように処理するのでしょうか。

svn help switchは、--relocateが次の目的で使用されることを示しています。

作業コピーのURLメタデータを反映するように書き換えます構文の変更のみ。これは、リポジトリのルートURLが変更された場合(スキームやホスト名の変更など)に使用されますが、作業コピーは引き続き反映されます内の同じディレクトリ同じリポジトリ。

そうではないので、新たにチェックアウトする必要があります。

14
Eli Acherkan

同じ操作を試しました。この場合、ファイルurlにsvnsyncを使用してコピーを作成し、mv/home/me/sync/therepo/home/me/sync/repos/therepoを使用して移動しました。

理由:同期カタログに、リポジトリのビューを台無しにするヘルプスクリプトがいくつかあります。

svn switch --relocateは、文句を言い続ける外部を除いて、ほとんどの部分で機能しました。

解決策は残酷でした。問題のあるファイルが含まれているディレクトリを削除(rm -rf)し、svnupdateを再度実行して外部を再フェッチしました。

少なくともこの方法では、大規模なチェックアウトを再度行う必要はありませんでした。

また、後でsvnサーバーを新しいマシンに移動するときに、同僚に指示を書くことができるようになりました。

2

また、ルートの子で再配置を実行している可能性もあります。

ルートフォルダで再配置を試みてください。すべての子フォルダも自動的に再配置されます。

1
Breiz

すでに実際にリポジトリをsvnadmin dump/svnadmin load経由で移行していると仮定すると、次のことを試すことができます。svn switch --relocate https://newserver/some/directory同じエラーが発生した場合は、実際には新しいsvn coを実行する必要があります。そのエラーに遭遇したことは覚えていませんが、すべてのリポジトリは、移動先のようなネストされた構造を使用しているため、その可能性のあるiveが対処する必要はありませんでした:-)

0
prodigitalson