5

EOL が予定されている svn リポジトリがあり、さまざまなプロジェクトが svnrdump ダンプと svnadmin ロードによって新しいリポジトリに移動されています。説明のために、基本的なトポロジは次のとおりです。

old repo:  http://oldrepo/repositories/oldname/...
new repo:  http://newrepo/repositories/newname/...

この特定のリポジトリは大きく、古いワークスペースを新しいリポジトリに向けたい開発者がいます。私が見ている問題は、TortoiseSVN が再配置イベントを許可し、URL を入力するhttp://newrepo/repositories/newnameと、最初の再配置が成功したように見えることです。ただし、ワークスペースは、新しいレポのディレクトリ構造が次のようになっていると認識しています。

http://newrepo/repositories/newname/oldname

ワークスペースの oldname への参照を削除する方法はありますか? 余分な意図しないディレクトリが原因で、SVN の更新が失敗します。私が考えられる唯一のオプションは、この開発者に新しいリポジトリから必要なワークスペース全体をチェックアウトしてもらい、WIP ファイルを新しいワークスペースにコピーしてもらうことです。クライアント側に他のオプションやソリューションはありますか?

編集: 作業ディレクトリは c:\SVN\FolderA です。次のコマンドを実行するとsvn relocate http://newrepo/repositories/newname/Folder1/FolderA、次のエラーが返されます。

svn: E155024: Invalid relocation destination: 'http://newrepo/repositories/newname/Folder1/FolderA' (does not point to target)

これがどれほど関連性があるかはわかりませんが、元のリポジトリの場所 oldrepo はフォルダーでしたが、新しいリポジトリでは newrepo (つまり: http://newrepo/repositories/newname) が新しいリポジトリのルート レベルです。また、移行中に変更は保持されましたが、個々のバージョン番号は保持されなかったことを指摘しておく必要があります。

4

2 に答える 2

4

作業コピーにも同じ問題がありました。この「無効な再配置先」エラーは、(「svnlook uuid」および「svnadmin setuuid」コマンドを使用して) リポジトリ UUID が新しいリポジトリにコピーされた場合に回避される可能性がありますが、作業コピーを 1.8 にアップグレードしたときに、このエラーが発生しました。作業コピーを新しいレポに再配置します。

作業フォルダーのルートにある非表示の .svn フォルダーを削除し、同じフォルダーへの新しい URL を使用して再度チェックアウトを実行することをお勧めします。SVN は新しいリポジトリ用にファイルを再度「バージョン管理」しますが、新しいチェックアウトを実行した場合と同じくらい時間がかかります。変更されたファイルがある場合は、チェックアウト コマンドが変更されたファイルを上書きする場合に備えて、同じフォルダーに再チェックアウトする前に、最初にパッチ ファイルを作成します。

2 つのパスには違いがあることに注意してください。

http://newrepo/repositories/newname
http://newrepo/repositories/newname/ <-- notice the final slash

最初のパスには「newname ディレクトリをターゲット フォルダにコピーする」とあり、2 番目のパスには「newname ディレクトリの内容をターゲット フォルダにコピーする」とあります。

お役に立てれば。

于 2013-10-10T22:23:38.560 に答える
1

開発者はおそらく次のことを行う必要があります。

  • 彼のプロジェクトを古いワークスペースから切り離す
  • コミットされていない変更 (ある場合) を別の場所に保存します。
  • 彼のプロジェクトを削除
  • プロジェクトを新しいワークスペースからエクスポートする
  • コミットされていない変更 (ある場合) をプロジェクトに再適用する
于 2012-05-08T12:13:12.983 に答える