水銀キュー:複数のリポジトリからのパッチのマージ
-
10-10-2019 - |
質問
私はリポジトリで水銀キューを使用しており、これらのパッチをパッチリポジトリに配置しています。別の貢献者が私のパッチキューをクローニングし、独自の変更を加えました。ローカルパッチリポジトリに変更をマージしたいと思います。
私はこのマージを実行するための良いワークフローを見つけようとしています
- パッチリポジトリの歴史における貢献者の変更セットを反映しています
- 競合の場合にユーザーのマージツールを呼び出す
最初は、パッチを直接マージしようとしました。これは非常に単純なケースでは大丈夫ですが、パッチは自分自身を調整することを心配する必要があるもののように思われないように見えるため、多くのことが変更された場合はうまく機能しません。全体として、パッチの3つの方法を検討することは複雑すぎると感じています。
より良い方法はありますか?
解決
これを処理する素晴らしい方法はありません。私がおそらくやることになったのは、2つのクローンを作成することです。 qfinish
パッチを一方とコントリビューターパッチでもう一方にパッチします。そのポイントは、個別のパッチのネット効果が適用されている各パッチのリポジトリがあります。次にあなた hg pull
これらのクローンの1つはもう一方に入ります hg merge
グラフィカルツールを使用してパッチの結果をマージできるようにします。唯一の違いは、パッチの違いです。この時点で、理想的には、 qimport
マージは変更されますが、それを行うことはできません。したがって、「Hg diff -r tip-1 -r tip」が必要な新しいdiffを取得する必要があります。二重反応。次に、それがどこから来たのかというメモでパッチキューリポジトリにそれをコミットし、それをコミットします。
明らかに亜最適ですが、私が思いつくことができる最高のものです。より良い解決策を聞きたいです。
他のヒント
パッチをマージする自動化された方法がないことを恐れています。
ただし、使用できる「トリック」の1つは、既存のパッチを修正する必要があるときに既存のパッチを編集/更新する代わりに、新しいパッチを作成することです。皆さんが物事を行う正しい方法に同意するとき、 hg qfold
パッチ。
そうすれば、新しいパッチを作成してから、お互いにつま先を踏み込むことはありません。