ある (内部) Subversion リポジトリから別の (外部) Subversion リポジトリに多数のプロジェクトをコピーするスクリプトを作成しようとしています。svnadmin dump を svndumpfilter と組み合わせて使用しようとして失敗しましたが、移動したファイルと元の場所が存在しないという問題に遭遇し続けています。svndumpfilter2 と svndumpfilter3 を使用してみましたが、さまざまなエラーにより、このルートを追求できませんでした。
変更履歴を保存する必要がないので、単純なスクリプトで十分だと思いました。古いリポジトリからプロジェクトをチェックアウトし、switch を使用してリポジトリを更新し、更新を実行するだけです。ただし、新しいリポジトリの UUID が無効であるというエラーが表示されるだけです。
*svn: 'file:///home/developer/svn/NEW_REPO/java/jar/FOO' のリポジトリには uuid 'c315c701-d367-47aa-a473-87f95147eb5f' がありますが、WC には '8ce3ae18-f586-4a38' があります-8bf8-e0fc691799fb'*
これが私のスクリプトです:
svn checkout file:////home/developer/svn/OLD_REPO/java/jar/FOO
cd FOO
svn switch --relocate file:////home/developer/svn/OLD_REPO/java/jar/FOO file:////home/developer/svn/NEW_REPO/java/jar/FOO .
svn update
私が間違っていること、またはスイッチがこのタスクに適していないことを誰かが見ることができますか?
アップデート
私はこれを前進させました。UUID の問題は、ターゲット リポジトリの作成方法にありました。私はそれ以来走っています
svnadmin setuuid file:////home/developer/svn/NEW_REPO <old_repo_id>
そして今、UUIDの問題はありません。ただし、代わりに問題が発生します。
svn: 内部からディレクトリを置き換えることはできません
理由がわかりません。ディレクトリの外からプロジェクトを更新しようとしてもうまくいきません。
アップデート
提案に従って、インポートとエクスポートを使用するようにスクリプトを切り替えました。これは、「リポジトリへ」が空のときに機能します。その後、スクリプトが機能しません。誰でも助けることができます。スクリプトは次のとおりです。
# Create a list of projects to Update
echo java/pom/FOO > list.txt;
echo java/jar/FOO2 >> list.txt;
echo java/jar/FOO2 >> list.txt;
for project in `cat list.txt`; do
echo "Updating: "${project};
projName=`echo ${project} | awk -F"/" '{print $NF}'`
# Obtain the current version
svn export ${FROM_REPO}${project} ${projName}
# Remove the .svn information
find ${projName} -name .svn -exec rm -rf {} \;
# Import the project into the new repository
svn import -m 'Updated by script' ${projName} ${TO_REPO}${project}
rm -rf ${projName}
done;