あるSubversionリポジトリから別のSubversionリポジトリに複数のフォルダを移動する

あるSubversionリポジトリから別のSubversionリポジトリに複数のフォルダを移動する

あるSubversionリポジトリから別のSubversionリポジトリに複数のフォルダを移動する

Subversion 1.4.2がインストールされているcentOS 6.4サーバーがあります。私のサーバーには2つのSubversionリポジトリがあります。

私は過去2年4ヶ月間「repoOLD」を使用してきました。

「repoOLD」には100個のフォルダ(プロジェクト)が含まれています。

「repoNEW」が作成されたばかりで、「repoOLD」から「repoNEW」にいくつかのアイテムをコピーする必要があります。

これで問題は、私の「repoOLD」から「repoNEW」に複数のフォルダ(プロジェクト)を転送する方法です。

インターネットを検索しようとしましたが、あるSubversionリポジトリから別のリポジトリに複数のフォルダを移動する方法のチュートリアルが見つかりません

答え1

他の人がSubversionを直接使用してより良い回答を投稿することもできますが、Pythonの機能が優れているので、Subversionにgit変換してからSubversionに変換する方法を提案します。gitfilter-branch

古いsvnリポジトリをローカルのgitリポジトリに複製します。

git svn clone <url-for-repoOLD>

ここで、ローカルレプリカgitがディレクトリに保存されていると仮定します。repoOLD

git cloneで望ましくないものをすべてフィルタリングしてください。

これで、不要になった新しいリポジトリのすべてのエントリを削除します。

cd repoOLD
git filter-branch --force --index-filter \
    'git rm -r --cached --ignore-unmatch dirA dirB dirC dirD' \
    --prune-empty --tag-name-filter cat -- --all

...dirA dirB dirC dirD不要になったディレクトリはどこにありますか?削除するすべての項目を一覧表示する必要があります。

ls必要なものが含まれていることを確認するには、などを使用してgit logこのリポジトリを確認してください。

新しいsvnリポジトリをローカルのgitリポジトリに複製します。

cd ..  # (get out of repoOLD if you are still in there)
git svn clone <url-for-repoNEW>

ここで、ローカルレプリカgitがディレクトリに保存されていると仮定します。repoNEW

また、repoNEWに何もコミットしていないか、repoOLDから何もインポートしていないため、この時点ではrepoNEWが完全に空であるとします。

gitrepoOLDクローンからすべてを取得します。

cd repoNEW
git remote add repoOLD ../repoOLD
git fetch repoOLD
git merge repoOLD/master

これで、これらの変更をrepoNEW svnサーバーに戻します。

git svn dcommit

関連情報