【问题标题】:SVN: is it possible to delete a branch that was copied removed etc for good?SVN:是否可以永久删除复制的分支等?
【发布时间】:2010-03-30 20:50:30
【问题描述】:

我必须从 svn 历史记录中删除一个分支。通常我会使用

svnadmin dump /path/to/repo |svndumpfilter --drop-empty-revs --renumber-revs exclude /branches/bad_branch 

然而,这个分支不仅被创建,而且被移动然后被移除,并且转储脚本无法处理下游信息,并显示如下消息:无效的复制源路径'/branches/bad_branch'

所以我想出了两种解决问题的方法

  1. 只保留最后几个修订版 历史并放置当前存储库 作为网络存档

  2. 转储到版本所在的版本 'bad_branch' 已创建并应用 其余的更改作为补丁, 因此失去了一些历史 最近的提交。

有没有更好、更清洁的方法来处理这个问题?

【问题讨论】:

  • 这个分支需要永久删除的任何特殊原因?
  • 这个分支包含整个项目树,使用 git svn 的人需要花费数小时才能获取大量数据

标签: svn svnadmin


【解决方案1】:

您的数字 2 的第一部分将起作用。所以是的,创建一个转储到引入有问题的分支的位置,并用它创建一个新的存储库。然后仍然使用 svnadmin dump 和 --incremental 选项,转储坏分支修订之间的所有好的修订。下面是增量转储命令的示例:

svnadmin dump /path/to/repo --incremental -r 1234:2345

继续将这些增量转储应用到新存储库。这应该会生成一个存储库,而不会出现令人讨厌的错误分支创建、移动和提交,并保留您所有的历史记录,以保存您建议的补丁会破坏的那些好的修订。

取决于坏分支有多少修订,这是很多工作。这也是目前使用 1.6.x 版本或更早版本的 Subversion 执行此操作的唯一方法。

现在要注意了。如果好版本中有提交消息引用了修订号,它们将被关闭。如果它们的数量有限,这还不错,但如果有很多,纠正起来可能会很乏味。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2017-01-06
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    相关资源
    最近更新 更多