修正SVN复制/移动

时间:2011-10-19 03:14:58

标签: svn

该项目的另一位开发人员移动了一个版本化的文件夹而没有通过SVN正确地进行操作。因此SVN显示一个目录树被删除,另一个被创建,并没有显示一个只是另一个的重命名结果。这个螺钉具有挂钉修订,差异和源历史。

有没有办法解决这个问题,例如通过svndump

基本上,将trunk/b标记为副本 - 来自trunk/a

2 个答案:

答案 0 :(得分:2)

您可以手动编辑该一次提交的svndump文件,以删除所有添加内容,并将其更改为一次添加trunk / a,其中包含copy-from和copy-from-rev。然后,您需要转储所有以前的修订版和所有后续版本,然后将所有修订版按顺序加载到新的存储库中并替换您的存储库。然后,您需要每个人从新存储库中签出并删除旧的工作副本。

您可以避免手动编辑位,假设重命名错误是该提交中的唯一内容。假设错误的修订版是$ REV。转储修订0到(但不包括)$ REV。将它们加载到新的存储库中。从新存储库签出,执行正确的重命名和提交。在旧存储库中通过HEAD进行$ REV + 1的增量转储并加载到新存储库中。

答案 1 :(得分:2)

您可以从修改前的版本进行分支,进行正确的重命名,然后将其合并到主干。
当然,您需要在合并期间从“新”目录报告修改。

这样,你就有了历史!

或者如果日志修订很少,您可以从修改中获取补丁,将修改恢复为svn ,并手动修改补丁以排除删除/创建操作。