しばらくコードに夢中になっていて、途中でパッチ シリーズを作成するのを忘れた場合、パッチ シリーズをさかのぼって作成するにはどうすればよいですか? これまでのところ、頭に浮かぶ唯一のことは次のとおりです。
# 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
新しいパッチが古いパッチの前に押し出される可能性があります。)