Если я какое-то время работал над кодом и забыл создать серию патчей по ходу дела, как я могу создать серию патчей ретроспективно? Пока что единственное, что приходит на ум, это:
# 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
на qdelete
, после чего я на несколько минут ударил бы себя лбом о кирпичную стену, или я мог бы включить слишком много или слишком мало во время операции qrecord.
Есть ли лучший способ?
(То, что я действительно хотел бы, это иметь возможность hg qpop
непосредственно перед патчем, который я хочу разбить, и использовать несуществующую на данный момент команду hg qunrecord
, чтобы интерактивно высосать изменения из патча мой рабочий каталог. Как только я доволен изменениями, hg qnew -f
может сжать новый патч перед старым.)