我正在使用包含许多项目的SVN存储库。我需要将一些项目从该存储库移到单独的存储库中,每个项目一个,保留历史记录。
我已经能够使用svnadmin dump
将整个存储库和svnadmin load
转储到另一个存储库中,但我找不到从原始存储库中只转储一个项目的方法,所以我可以加载到新的。这可能吗?如果是这样的话?
答案 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
。