我见过其他类似的帖子和答案。但我的情况更受限制如下:
分支回购/ A有子分行回购/ B和回购/ C. C将新的foo.c推送/合并到A.然后B拉/合并以获取foo.c然后推送/合并其他更改。让我们说B的修正在拉动之后从10变为11。现在一切都搞砸了B分支,所以我希望B回到第10版,并且从未发生过拉动。
所以我查看了这些帖子,并通过以下步骤找出解决问题的方法:
现在我想使用原始的repo url:
2.1)备份以防止任何搞乱:svnadmin copy $(repo / B)$(repo / B_backup)
2.2)复制新:svnadmin copy $(newRepo / B)$(repo / B);
现在我希望UUID是相同的,我没有svnadmin setuuid,因为svn版本是1.4。所以:
3.1)在步骤1之前,svn info $(repo / B)记录原始UUID
3.2)在第2步之后,在某处打开$(repo / B)的日志,然后将原始UUID复制到它
现在$(repo / B)有修订版10和相同的UUID。
我的问题是
完成所有这些后,分支A和C也会改变吗?
我的解决方案中是否有任何遗漏因为我不想再次搞砸了?还是更好的方法呢?
谢谢
答案 0 :(得分:1)
不应使用svnadmin
转储和恢复整个仓库(!),而应简单地删除/复制子树:
C:\>svn delete -m "this version went bad" svn://server/repo/B
Committed revision 12.
C:\>svn copy -m "restore good version" svn://server/repo/B@10 svn://server/repo/B
Committed revision 13.
一般情况下,如果可以避免,请不要使用svnadmin
。它实际上适用于管理任务 - 而不是正常的源控制操作,如分支/合并/回滚。