我正在使用包含许多项目的 SVN 存储库。我需要将一些项目从该存储库中移出到单独的存储库中,每个项目一个,保留历史记录。
我已经能够使用svnadmin dump
转储整个存储库并将svnadmin load
其转储到另一个存储库中,但是我找不到一种仅从原始存储库中转储一个项目的方法,因此我可以将其加载到新存储库中。这可能吗?如果有怎么办?
我正在使用包含许多项目的 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 评论的一个小补充。
如果您使用,您可能会丢失加载存储库( 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
。