Mercurial でリリース ブランチを維持する際に変更をスキップすることについて、最近いくつか質問がありました。例えば:
2.0 で導入されたので、graft
この問題を回避するために使用することを考えていました。次のようなリビジョン ツリーがあるとします。
A---B---C---D---E---F---G---H---I---J
Evil change をスキップするリリース ブランチを作成する必要があるとしますE
。
hg update -r D
hg graft "F::J"
私たちに与える:
A---B---C---D---E---F---G---H---I---J
\
--F'--G'--H'--I'--J'
- Q1: ここで何が起こったのですか?
transplant
からパッチを生成し、それらをにF::J
適用したことは理解できますが、パッチではなく 3 方向マージを使用すると言われています。それで.......それはどのように機能しますか?なぜそれが良いのですか?D
graft
を修正E
して、それを私のリリース ブランチにマージするとしましょう。
--E2-----------------
/ \
A---B---C---D---E---F---G---H---I---J---M1
\ \
--F'--G'--H'--I'--J'---------M2--
M1 はストレート マージです。特別なことは何もありません。M2は、「同じ」(または少なくとも同等の)変更がオンになっているブランチをマージしています。
D
Q2: このマージは、J'
とを使用した通常の 3 方向マージM1
ですか?- Q3: Mercurial は、マージを支援するために移植操作に関する追加情報を保存/使用しましたか?
そして最後に...
- Q4: このようなフローの潜在的な問題は何ですか?