如何编辑MQ补丁的特定块?

时间:2014-01-31 12:20:23

标签: version-control mercurial dvcs mercurial-queue

我的用例:
我注意到我在早期版本中进行了不必要的编辑,我想从补丁中丢弃一个块,并保留此文件的所有其他更改。 我已经尝试在.hg/patches/内编辑补丁,然后编辑hg qrefresh,但之后会重新出现。

可能的解决方案:

  • 导出该补丁,删除除了不需要的hunk之外的所有补丁,然后反向应用此补丁。
  • 以某种方式使workdir与包含hunk的补丁一起“脏”,然后使用我的IDE的GUI很好地编辑文件,该GUI轮询VCS并突出显示更改,并提供选项以响应这些更改。

问题:

  • 正在编辑.hg/patches是有效的做法吗?
  • 如何通过neede补丁使workdir变脏,然后通过编辑重新应用它?喜欢git reset --soft
  • 有没有其他方便的方法来做subj?

1 个答案:

答案 0 :(得分:1)

  

我在早期版本中进行了不必要的编辑

在MQ方面没有多大意义。我将在假设中回答“MQ队列中的一个补丁必须获得额外的修复,其他补丁保存为”

  

编辑.hg /补丁是一种有效的做法吗?

不,这是最糟糕的选择

  

如何通过neede补丁使workdir变脏,然后通过编辑重新应用它?像git reset --soft?

在队列

中应用此单个所需补丁
hg qpop -a
hg qpush --move Mypatch

进行必要的更改,刷新补丁

<edit>+<save> in IDE
hg qrefresh

取消应用并移至队列中的旧位置

hg qpop
hg qpush --move SomeOther //set of pushes in order to restore old order
hg qpop -a