SVN回购1:https://local.server.001/svn/repo1
SVN回购2:https://local.server.002/svn/repo2
我们希望将repo1(从服务器001)移动到repo2的子文件夹,称为(例如)'repo1'。
这就是说,repo1将被复制到这个位置:
https://local.server.002/svn/repo2/trunk/repo1
使用简单的文件副本执行此操作非常简单。但是,我要做的是在保存被复制到repo2存储库的repo1文件夹中的文件的历史记录时实现此目的。
我在存储库之间或不同服务器上的存储库之间找到了大量的复制示例 - 但是我无法找到这种特定情况的示例。
请帮忙!感谢。
我们都是TortoiseSVN用户,所以任何使用TorsoiseSVN GUI的答案都是优先考虑的。我们的SVN服务器在VisualSVN上运行。
编辑 - 添加精美插图:
编辑2 - 仍然无法让它工作:
在回购1:sysadmin dump C:\Repositories\repo1 > D:\dump\repo1
这很有用。将repo1
转储文件复制到服务器2.然后运行:
svnadmin load --parent-dir repo1 C:\Repositories\repo2 < D:\someDir\repo1
我被阻止了这个错误:
Started new transaction, based on original revision 1. adding path : repo1/trunk ...svnadmin: E160013: File not found: transaction '281-96', path '/repo1/trunk'
我尝试将顶级文件夹repo1
提交到repo2
存储库,但没有运气。
答案 0 :(得分:0)
啊哈。似乎我的案例和S / O上的其他类似案例之间的区别在于我的存储库使用默认的/ branch / tags / trunk结构。
我的最终序列是:
svnadmin dump C:/Repositories/repo1 > D:/dump/repo1.dump
svndumpfilter include /trunk < D:/dump/repo1.dump > D:/dump/repo1.filtered.dump
然后我(通过TortoiseSVN)在repo1
存储库中创建了一个顶级repo2
文件夹。
对于我来说,下一行失败了,尽管它遵循了所有建议的例子:
svnadmin load --parent-dir /repo1 C:/Repositories/repo2 < D:/dump/repo1.filtered.dump
不好。没工作。保持返回类型Started new transaction, based on original revision 1. adding path : repo1/trunk ...svnadmin: E160013: File not found: transaction '281-96', path '/repo1/trunk'
的错误。这是我被卡住的地方。我甚至创建了repo1
文件夹,为什么这条消息!!
..好吧,这是因为branches / tags / trunk文件夹结构是VisualSVN的默认设置。我将load
语句更改为在/trunk
文件夹之前包含repo1
后,一切正常:
svnadmin load --parent-dir /trunk/repo1 C:/Repositories/repo2 < D:/dump/repo1.filtered.dump
它正在寻找最高级别的/repo1
文件夹,也就是说,住在tags
,branches
和{{1}旁边}。
(在此之后,我不得不做一个SVN移动,将所有内容从/ trunk / repo1 / trunk / *移动到/ trunk / repo1。似乎dump / load重新创建了'trunk'文件夹,我没有'我想要。