web-dev-qa-db-ja.com

複数のプロジェクトを含むSVNリポジトリから1つのプロジェクトをダンプするにはどうすればよいですか?

私は多くのプロジェクトでSVNリポジトリを使用しています。いくつかのプロジェクトをそのリポジトリから個々のリポジトリに移動し、各プロジェクトに1つずつ、履歴を保持する必要があります。

svnadmin dumpを使用してリポジトリ全体をダンプし、svnadmin loadそれを別のリポジトリにダンプできましたが、元のリポジトリから1つのプロジェクトのみをダンプしてロードできる方法が見つかりません。新しいものに。これは可能ですか?もしそうならどのように?

42
Stacey Richards

これを行うには 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
65
Avi

@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をコミットすることでした。

0
Leos Literak