如果我已经编写了一段时间的代码,并且忘记创建补丁系列,我该如何回顾性地创建补丁系列?到目前为止,唯一想到的是:
# Prepare and test the first batch of changes.
$ hg qrecord -m 'first batch' 1.patch
$ hg qnew -m 'stash downstream changes' stash-1.patch
$ hg qdelete -k temp-1.patch
$ make hello
cc hello.c -o hello
hello.c: In function ‘main’:
hello.c:4: error: syntax error at end of input
make: *** [hello] Error 1
$ echo '}' >> hello.c
$ make hello
cc hello.c -o hello
$ hg qrefresh
# Recover the stashed changes.
$ patch -p1 < .hg/patches/last.patch
# And around we go again!
$ hg qrecord -m 'second batch' 2.patch
$ hg qnew -m 'stash downstream changes' stash-2.patch
$ hg qdelete -k stash-2.patch
$ make hello
...
这种非常繁琐的方法也是危险的。我可能会忘记-k
on qdelete
,此时我会用前额撞砖墙几分钟,或者在 qrecord 操作期间我可能包含太多或太少。
有没有更好的办法?
(我真正想要的是能够hg qpop
在我想要拆分的补丁之前,并使用当前不存在的命令,hg qunrecord
以交互方式将补丁中的更改吸到我的工作目录中。一旦我很高兴随着这些变化,hg qnew -f
可以在旧补丁前面挤一个新补丁。)