如果我一直在编写代码并忘了创建补丁系列,我该如何创建补丁系列回顾?到目前为止唯一想到的是:如何将工作分成多个具有mercurial队列的修补程序?
# 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
...
这种非常麻烦的方法也是危险的。我可能会忘记qdelete
上的-k
,此时我会在砖墙上撞击我的前额几分钟,或者在qrecord操作过程中可能包含太多或太少。
有没有更好的方法?
(我真的很希望能够在hg qpop
之前,在我想分割的补丁之前,使用一个当前不存在的命令hg qunrecord
交互式地将修补程序从修补程序中吸收到我的工作目录中。一旦我对这些变化感到满意,hg qnew -f
可能会在旧的前面挤出一个新的补丁。)
这是关于按文件分成不同的补丁的问题吗? IE浏览器。给定文件的更改不会跨多个修补程序分割。因为如果是这样,你可以做得比你上面描述的方法更好。这是一个古老的问题,但仍然是一个相关问题。 – 2013-08-19 09:07:04
@FaheemMitha:我在一段时间之前转向git,所以它与我无关。但是为了记录,我确实想要区分文件中的更改,特别是通常包含多个不相关的文件添加/删除的顶级项目文件。事实上,这几乎是常态而非例外。 – 2013-08-20 03:18:42
好的。感谢您的反馈,Marcelo。 – 2013-08-20 16:27:20