如何从包含多个项目的SVN存储库中转储一个项目?

时间:2008-12-03 13:05:00

标签: svn svnadmin svndump svndumpfilter

我正在使用包含许多项目的SVN存储库。我需要将一些项目从该存储库移到单独的存储库中,每个项目一个,保留历史记录。

我已经能够使用svnadmin dump将整个存储库和svnadmin load转储到另一个存储库中,但我找不到从原始存储库中只转储一个项目的方法,所以我可以加载到新的。这可能吗?如果是这样的话?

2 个答案:

答案 0 :(得分:64)

您可以使用svndumpfilter实用程序执行此操作。 SVN书籍有good explanation如何做到这一点。

例如,一种方法是:


$ 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

答案 1 :(得分:0)

只是@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