私は多くのプロジェクトでSVNリポジトリを使用しています。いくつかのプロジェクトをそのリポジトリから個々のリポジトリに移動し、各プロジェクトに1つずつ、履歴を保持する必要があります。
svnadmin dump
を使用してリポジトリ全体をダンプし、svnadmin load
それを別のリポジトリにダンプできましたが、元のリポジトリから1つのプロジェクトのみをダンプしてロードできる方法が見つかりません。新しいものに。これは可能ですか?もしそうならどのように?
これを行うには svndumpfilter ユーティリティを使用できます。 SVNブックには、これを行う方法の 良い説明 があります。
たとえば、1つの方法は次のとおりです。
$ svnadmin dump /path/to/repo
| svndumpfilter include /proj > dump-file
$ svnadmin create /new/proj/repo
$ svnadmin load --ignore-uuid /new/proj/repo < dump-file
$ svn rm file:///path/to/repo/proj
@Aviの回答と@Kitのコメントへのほんの小さな追加です。
svndumpfilter
を使用すると、リポジトリのロードに必要なコミットが失われる可能性があります( source )。
私の場合:
cat dump | svndumpfilter --drop-empty-revs --renumber-revs include trunk/project > project.dump
svnadmin load --ignore-uuid /opt/svn/newlocation < project.dump
<<< Started new transaction, based on original revision 1
svnadmin: File not found: transaction '0-0', path 'trunk/project'
解決策は、最初に上位ディレクトリtrunk
をコミットすることでした。