我必须从svn历史中删除一个分支。通常我会用
svnadmin dump /path/to/repo |svndumpfilter --drop-empty-revs --renumber-revs exclude /branches/bad_branch
然而,这个分支不是刚创建的,而且还被移动然后被删除,转储脚本无法处理下游信息,例如:无效的复制源路径'/ branches / bad_branch'
所以我想象有两种方法可以解决这个问题
只保留最后几个版本 历史并放置当前存储库 作为网上档案
转储到修订版本 'bad_branch'已创建并申请 其余的更改作为补丁, 因此失去了一些历史 最近的提交。
有更好,更清洁的方法来解决这个问题吗?
答案 0 :(得分:2)
你的2号的第一部分将起作用。所以,是的,创建一个转储到引入违规分支的位置并使用它创建一个新的存储库。然后仍然使用svnadmin转储和--incremental选项,转储坏分支修订版之间的所有良好修订。下面是增量转储命令的示例:
svnadmin dump /path/to/repo --incremental -r 1234:2345
继续将这些增量转储应用于新存储库。这应该会产生一个存储库而不会出现违规的坏分支创建,移动和提交,并保留所有历史记录,以便修补补丁(如您所建议的那样)会破坏。
根据坏分支的修改次数,这是很多工作。它也是目前使用1.6.x版本或更早版本的Subversion执行此操作的唯一方法。
现在这里是警告。如果良好修订中的提交消息引用了修订号,则它们将被关闭。如果它们数量有限,这并不会很糟糕,但如果有很多则可能很难纠正。