42

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

我已经能够使用svnadmin dump转储整个存储库并将svnadmin load其转储到另一个存储库中,但是我找不到一种仅从原始存储库中转储一个项目的方法,因此我可以将其加载到新存储库中。这可能吗?如果有怎么办?

4

2 回答 2

66

您可以使用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
于 2008-12-03T13:33:28.380 回答
0

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

于 2014-10-20T14:48:11.503 回答