Wenn ich eine Weile am Code gearbeitet und dabei vergessen habe, eine Patch-Serie zu erstellen, wie erstelle ich dann die Patch-Serie im Nachhinein? Bisher ist das einzige, was mir dazu einfällt:
# 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
...
Dieser sehr umständliche Ansatz ist auch gefährlich. Ich könnte vergessen, die -k
en qdelete
Dann schlage ich meine Stirn minutenlang gegen eine Wand, oder ich habe zu viel oder zu wenig bei der qrecord-Operation aufgenommen.
Gibt es einen besseren Weg?
(Was ich wirklich möchte, ist, dass ich in der Lage bin hg qpop
kurz vor einem Patch, den ich aufteilen möchte, und verwende einen derzeit nicht existierenden Befehl, hg qunrecord
, um interaktiv Änderungen aus dem Patch in mein Arbeitsverzeichnis zu saugen. Sobald ich mit den Änderungen zufrieden bin, hg qnew -f
ein neues Pflaster vor das alte klemmen könnte).