現在の変更のいくつかから新しいパッチを作成する効率的な方法

StackOverflow https://stackoverflow.com/questions/8816811

  •  27-10-2019
  •  | 
  •  

質問

私はマーキュリアルキューを非常に多く使用していますが、本当に満足していますが、過度に複雑だと思うワークフローが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のファイルの数は通常、比較して小さいです。

これを達成するためのより良い方法はありますか?

役に立ちましたか?

解決

この問題に対する最も典型的なアプローチをカバーしていると思います。また、時々それに遭遇します。私が知っている1つの別の解決策は、することです

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top