2017-01-30 54 views
-1

这就是我试图完成svnadmin的 - 移植项目的子目录花药项目的根目录

Project_A 
    -SubFolder_Y 
     Project_X 

Project_B 
    Project_X 

所以基本上从项目A子目录“Project_X”迁移到B项目与根所有修订。

我想使用svnadmin命令,因为我有权访问SVN服务器。

我知道,我想这样的东西沿着线:

1. svnadmin dump \\Repositories\Project_A > ProjectA.dump 
2. svndumpfilter include Project_X --drop-empty-revs --renumber-revs <Project_A.dump> Project_X.dump 
3. svnadmin load --ignore-uuid \\Repositories\Project_B <Project_X.dump 

这似乎并不工作,我缺少什么吗?

在此先感谢!

+0

项目A和项目B是不同的储存库,对不对? – bahrep

+0

*这似乎不工作,我在这里错过了什么?* - 什么不工作?你有任何错误? – bahrep

+0

@bahrep是ProjectA和ProjectB是不同的。上面的代码也会保留'SubFolder_Y'作为我不想要的Project_X的父项。 –

回答

0

首先,您必须阅读SVNBook chapter about repository history filtering。在使用一些测试回购测试之前,请勿将svnadmin load转储到真实存储库。您必须确保svndumpfilter生成的过滤转储包含您期望并希望包含的所有数据。

上面的代码也将保持“SubFolder_Y”作为我不想

这是覆盖在上面链接的文档章节 Project_X的父母。 SVNBook建议您使用文本编辑器手动编辑转储文件,或者通过脚本重写或删除父路径(在您的案例中为SubFolder__Y)。这个任务的复杂程度取决于你的转储文件的版本号,它的大小,版本库路径等等。但是一般来说,这是一个不平凡且潜在危险的任务,我建议你避免手动修改转储文件。

而不是重写父路径,您可以在加载过滤的转储后将Project_X移动到新存储库的根目录。

的命令应该如下:

svn move FROM-URL TO-URL -m "ENTER LOG MESSAGE"