私は多くのプロジェクトでSVNリポジトリを使用しています。いくつかのプロジェクトをそのリポジトリから個々のリポジトリに移動する必要があります。プロジェクトごとに1つずつ、履歴を保持します。
svnadmin dump
リポジトリ全体とそれを別のリポジトリにダンプするために使用できましたがsvnadmin load
、元のリポジトリから1つのプロジェクトだけをダンプする方法が見つからないため、新しいリポジトリにロードできます。これは可能ですか?もしそうなら、どのように?
私は多くのプロジェクトで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のコメントへのほんの少しの追加。
を使用すると、リポジトリ ( sourcesvndumpfilter
)のロードに必要なコミットが失われる可能性があります。
私の場合:
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
。