2

私は水銀キューをかなり多く使用していて、それらに本当に満足していますが、私が過度に複雑だと思うワークフローが1つあります。パッチで作業しているときに、別のパッチで作業していることに気付くことがあります(たとえば、機能の作業中に見つけたバグを修正したり、別の機能を追加したりした場合など)。私は実際に別のパッチに入れたいと思っています)。

したがって、作業ディレクトリの状態は次のとおりです。適用されたパッチA、B、Cに加えて、パッチCに配置する必要のある変更、および新しいパッチDに配置する必要のある変更。

そのための私の現在のワークフローは次のとおりです。

hg qnew D.patch files-for-patch-D..
hg qnew temp.patch # changes for patch C
hg qpop
hg qpop
# Now I'm on patch C
hg qfold temp.patch # Integrate changes into patch C
# Here I could have patch errors.. 
hg qpush

私もこのようにできることを知っています

hg qrefresh files-for-patch-C..
hg qnew -m "..." new-feature.patch 

このアプローチの欠点は、パッチCのファイルの数が通常多いことであり、それらすべてをコマンドラインに配置する必要があるのは厄介です。パッチDのファイル数は、通常、比較すると少ないです。

私が上で概説したものよりもこれを達成するためのより良い方法はありますか?

4

1 に答える 1

1

この問題に対する最も典型的なアプローチについて説明したと思います — 私も時々それに出くわします。私が知っている1つの代替ソリューションは、

$ hg qrefresh -X files-for-patch-D
$ hg qnew D.patch

つまり、パッチ C に適切なすべてのファイルを含めよとするのではなく、パッチ D で変更したいくつかのファイルを除外します。

hg qpop -f変更を一時的なパッチに格納する代わりに、( を使用して) パッチ D を強制的にポップすることもできます。これは、パッチ D によって変更されたファイルが作業コピーの変更と交差しない場合、つまり、パッチ D を作成するためにレコード拡張qrecordを使用していない場合にのみ機能します。

于 2012-01-11T09:38:34.613 に答える