3

ある (内部) 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;
4

3 に答える 3

1

プロジェクトの HEAD リビジョンを 1 つの svn リポジトリから別の svn リポジトリに移動するだけの場合 (単一のディレクトリに含まれていると仮定します)、おそらく最も簡単な方法は、元の場所からsvn エクスポートすることです (ローカル ディレクトリ)、svnで新しい場所にインポートします。

于 2012-11-23T15:09:08.537 に答える