Mercurial:崩溃多个非连续提交

时间:2015-07-01 11:44:44

标签: mercurial

我经常回顾一些可能已经提交了大量提交的问题,其中很多都是非连续的。在许多情况下,错误后来得到纠正,我宁愿在第一次检查时看到最终的修正版本。

在我开始寻找的那一刻,“重写历史”已经“已经太晚了”;一切都已被推入世界(通常是由我以外的其他人)。

我正在寻找的是一种方法来查看多个非连续提交的联合差异;然后我可以选择实际包括将全局历史中的差异作为相同结论的替代路径(更直接但更不真实的历史),或者仅将diff用作本地参考。

Mercurial是否有内置(或其他)工具可用于此?

1 个答案:

答案 0 :(得分:1)

到目前为止,这是我自己的答案;我仍然非常愿意接受“真正的解决方案”:

  • hg直到系列
  • 中第一次提交的父级
  • 要获得第一个“移植物”,必须采取一些额外的动作,因为移植物必须与原始移植物不同。因此:
    • hg将第一次提交导出到某个位置
    • 在那里做出任何改变
    • hg将其导入
  • 其他提交可以使用常规hg移植延伸
  • 进行移植
  • 使用折叠扩展程序(注释掉“这是由当前用户创建的”)以折叠结果

作为伪命令行,假设有趣的提交interesting-0 .. interesting-n

hg up interesting-0^
hg export interesting-0 > /tmp/interesting-0
vi /tmp/interesting-0
hg import /tmp/interesting-0

hg id -r tip  # this allows us to identify the new hash of the 'base for collapsing'

hg graft interesting-1
# ...
hg graft interesting-n

hg collapse -r base-for-collapsing:tip
# clean up the commit message in your editor.
# either merge & push; or throw the result away after inspection