【发布时间】:2013-05-12 02:39:31
【问题描述】:
我看过其他类似的帖子和答案。但我的情况更受以下限制:
分支 repo/A 有子分支 repo/B 和 repo/C。 C 将新的 foo.c 推送/合并到 A。然后 B 拉/合并以获取 foo.c,然后推送/合并其他更改。假设 B 的修订在 pull 后从 10 更改为 11。现在分支 B 的一切都搞砸了,所以我希望 B 回到修订版 10 并认为拉动从未发生过。
所以我浏览了那些帖子并想通过以下步骤解决问题:
- svnadmin 转储 $(repo/B) -r 0:10 | svnadmin 加载 $(newRepo/B)
-
现在我想使用原来的 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也会改变吗?
我的解决方案中是否缺少任何内容,因为我不想再搞砸了?或者更好的方法?
谢谢
【问题讨论】:
-
不要转储/恢复整个仓库!只需 svn 从 HEAD 中删除 B,然后 svn 从您上一个好的修订版中复制它。
-
所以你是说即使我只转储/加载 B,整个 A 也会被转储/加载?
-
好吧,也许我很困惑 - 你有多少个 repos?我假设你有一个 repo,A B 和 C 是 repo 中的文件夹/分支?
-
好的,所以不要使用
svnadmin dump- svnadmin 工具用于整个仓库维护,而不是每天都恢复子树 -
我发布了一个答案 - 有帮助吗?