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

我正在与许多项目的SVN存储库。 我需要把这个项目中的一些项目移到个别的仓库中,每个项目一个,保存历史。

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

您可以使用svndumpfilter实用程序来执行此操作。 SVN书有很好的解释如何做到这一点。

例如,一种方法是:

 $ 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 ,则可能会丢失加载存储库( 源 )所需的提交。

在我的情况下:

 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' 

解决scheme是首先提交一个上层目录trunk