2012-01-11 2 views
2

私は水銀のキューをかなり使っていますが、実際には に満足していますが、複雑すぎるワークフローがあります。 時々私はパッチで作業していますが、 は、 の別のパッチに含まれるべきものに取り組んでいることを認識しています(たとえば、 の機能で作業中に見つかったバグを修正した場合や私は実際に に別のパッチがあることを望むという別の機能を追加しました)。現在の変更の一部から新しいパッチを作成する効率的な方法

ので状態は、作業ディレクトリのためです:、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の パッチDの数は通常、比較して小さいです。

上記の の概要よりも、これを達成する良い方法はありますか?

答えて

1

私はあなたがこの問題の最も典型的なアプローチをカバーしていると思います。私は時々それを実行します。 パッチC.

ためすべての権利のファイルが含まれますが、パッチDのために変更され、いくつかのファイルを除外し、代わりの しよう:私が知っている一つの代替ソリューションです

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

を行うことです

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

+0

「強制的にポップする」: 'hg qpop -f'? –

+0

はい、それは私が言ったことです、私は答えを更新しました。 –

関連する問題