作業用コピーフォルダーを古い専用の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
どちらが正しいか.....しかし、エラー、どうすれば場所を移動できますか?
私の知る限り、svn switch
(--relocate
の有無にかかわらず)を使用して新しいリポジトリに移動することはできません。このように考えてください。新しいリポジトリのHEADリビジョンはx、古いリポジトリのリビジョンはyです。では、SVNは作業コピーのベースリビジョンをどのように処理するのでしょうか。
svn help switch
は、--relocate
が次の目的で使用されることを示しています。
作業コピーのURLメタデータを反映するように書き換えます構文の変更のみ。これは、リポジトリのルートURLが変更された場合(スキームやホスト名の変更など)に使用されますが、作業コピーは引き続き反映されます内の同じディレクトリ同じリポジトリ。
そうではないので、新たにチェックアウトする必要があります。
同じ操作を試しました。この場合、ファイルurlにsvnsyncを使用してコピーを作成し、mv/home/me/sync/therepo/home/me/sync/repos/therepoを使用して移動しました。
理由:同期カタログに、リポジトリのビューを台無しにするヘルプスクリプトがいくつかあります。
svn switch --relocateは、文句を言い続ける外部を除いて、ほとんどの部分で機能しました。
解決策は残酷でした。問題のあるファイルが含まれているディレクトリを削除(rm -rf)し、svnupdateを再度実行して外部を再フェッチしました。
少なくともこの方法では、大規模なチェックアウトを再度行う必要はありませんでした。
また、後でsvnサーバーを新しいマシンに移動するときに、同僚に指示を書くことができるようになりました。
また、ルートの子で再配置を実行している可能性もあります。
ルートフォルダで再配置を試みてください。すべての子フォルダも自動的に再配置されます。
すでに実際にリポジトリをsvnadmin dump
/svnadmin load
経由で移行していると仮定すると、次のことを試すことができます。svn switch --relocate https://newserver/some/directory
同じエラーが発生した場合は、実際には新しいsvn co
を実行する必要があります。そのエラーに遭遇したことは覚えていませんが、すべてのリポジトリは、移動先のようなネストされた構造を使用しているため、その可能性のあるiveが対処する必要はありませんでした:-)