2009-06-17 81 views
8

目前,我有一堆在它不同的项目的一个大SVN仓库,具体如下:将SVN回购的一部分复制到新回购?

/ 
Project1/ 
      trunk/ 
      tags/ 
      branches/ 
Project2/ 
      trunk/ 
      tags/ 
      branches/ 
Project3/ 
      (etc...) 

不过,现在我试图把它分解成不同的版本库(因各种原因),并我想每个项目如下:

/ 
trunk/ 
tags/ 
branches/ 

如果可能,所有的历史和外部应保持不变。但是,我不确定这是否可以实际完成。我在SO上看到过几个类似的问题,但没有一个完全解决我在这里遇到的问题。基本上我试图用旧版本库的历史记录“拉出”一个子目录及其全部内容,并将全部内容放到它自己的(新的)存储库中。

我问不可能吗?

+0

伟大的问题+1。这一定是可能的。尽管如此,你可能会在动脉瘤和动脉瘤之前结束。 – 2009-06-17 20:20:36

+0

“不相关的编程” - J/K,我只是因为这种类型的评论而感到恼火,而且需要吹散一些蒸汽:) +1和fave'd :) – cwap 2009-06-17 20:23:38

回答

9

使用

svnadmin dump path/to/repository > repo.dmp 

,然后用svndumpfilter只有一个子树加载到一个新的存储库。

4

由于SVN 1.7,你可以使用

svnrdump dump path/to/repository > dump 

获得转储。尽管Stefans解决方案有效,但它确实需要访问服务器负责回购。 svnrdump可以通过任何可以读取的回购协议在网络上运行。