2011-01-11 12 views
4

私はMercurial Queuesをリポジトリで使用しており、それらのパッチをパッチリポジトリに配置しています。もう1人の寄稿者が私のパッチキューをクローンし、自分の変更を加えました。私はローカルパッチリポジトリでその変更をマージしたいと思っています。私はこれがMercurial Queues:複数のリポジトリからのパッチのマージ

  • がパッチリポジトリ
  • の歴史の中で貢献のチェンジセットを反映しているとマージを行うための良いワークフローを見つけようとしています

    は競合

の場合は、ユーザーのマージツールを起動します

最初は、パッチを直接マージしようとしました。これは非常に単純なケースでは大丈夫ですが、多くのことが変更されたときにうまく動作しません。パッチは行番号のコンテキストに依存するため、自分自身を調整することについて心配する必要があります。全体として、パッチの3つの違いが複雑すぎるかどうかを調べることができます。

良い方法がありますか?

答えて

1

これを処理する素晴らしい方法はありません。私がおそらくやることは、2つのクローンを作成して、qfinishのパッチを1つに、寄稿者のパッチをもう1つに作成することです。それは、それぞれ別々のパッチのネットエフェクトを適用してレポをすることになります。次にhg pullを他のクローンにコピーし、hg mergeを使用すると、グラフィカルツールを使用してパッチの結果をマージすることができます。唯一の違いは、パッチの違いです。この時点で、理想的には、qimportのマージチェンジセットを実行することはできますが、それを行うことはできませんので、差分を取得するには 'diff -r tip-1 -r tip'を実行する必要があります開始前と終了後の2つの結果の間にある。そのdiffを「qimport」して、それがどこから来たのかをメモでパッチキューレポにコミットします。

決定的には最適ではありませんが、最高のものを思い付くことができます。私はもっ​​と良い解決策を聞きたいです。

+0

それは基本的に私に起こった唯一の計画ですが、他の人たちがより良いアイデアを持っていることを期待していました。この経験は、MQの代わりに[pbranch](http://arrenbrecht.ch/mercurial/pbranch/index.htm)を使用することに興味がありました。パッチは通常のブランチなので、このフローをよりよくサポートするようです。 –

+0

私が変更に対して他の誰かと働いているのであれば、パッチではなく本当のコミットを使用します。そのクローンから「上流」に戻ることは決してありませんが、それは私たちに仕事と良いマージツールを提供し、「上流」からの変更を取り入れるならば簡単にして、後で「hg diff」をインポートして上流に送ります。 –

0

私はパッチをマージする自動化された方法がないことに恐れています。

ただし、修正する必要がある場合に既存のパッチを編集/更新する代わりに、新しいパッチを作成することができます。あなたがすべて正しいことをすることに同意すると、hg qfoldパッチが適用されます。

あなたは新しいパッチを作成するので、あなたはあまりにもお互いに足を踏んでいることはありません。

+0

はい、私は間違いなく他のコントリビュータが今から新しいパッチを送信することを強制します。ヒントをありがとう! –

関連する問題