はい、これには Mercurial を使用できます。これがどのように機能するかです。
new-dot-net
新しい .Net バージョンをサポートするため、現在のクローンが呼び出されたとします。あなたはそれのクローンを作成し、それを呼び出す
old-dot-net
か、そのようなものです。2 つのクローンは同一になり、どちらも .Net 3.5 をターゲットにしています。
old-dot-net
.Net 2.0 互換にするために、慎重に小さな変更を加えます。変更を加えると、2 つのクローンが分岐し始めます。
新しいドットネット: ... [a] --- [b]
old-dot-net: ... [a] --- [b] --- [c] --- [d]
ここでは[c]
、[d]
.Net 2.0 互換性を追加するために変更セットを作成しました。では見たくない下位互換性の変更があるため、old-dot-net
クローンにはより多くの変更セットが含まれていることに注意してください。作業を続けるときは、次のことを考慮することが重要です。には、変更セットのサブセットが含まれます。変更は から
に流れますが、反対方向には流れません。new-dot-net
new-dot-net
net-dot-net
old-dot-net
new-dot-net
old-dot-net
で新しい変更を行ったとしnew-dot-net
ます。で変更するnew-dot-net
と、状況は次のようになります。
new-dot-net: ... [a] --- [b] --- [x]
old-dot-net: ... [a] --- [b] --- [c] --- [d]
変更を にバックポートする場合は、次のold-dot-net
ように変更してold-dot-net
からプルしnet-dot-net
ます。
% cd old-dot-net
% hg pull ../new-dot-net
これにより、 に新しい頭が作成されますold-dot-net
:
[バツ]
/
old-dot-net: ... [a] --- [b] --- [c] --- [d]
[x]
変更セットには[b]
親の変更セットがあるためです。複数の頭ができたので、頭の数を減らすためにマージする必要があります。[x]
マージすることにより、「これがどのように[d]
結合されるべきか」というあなたの方法である新しい変更セットを作成します。変更セットがおよび
で[x]
触れられていないコードのみに触れている場合、マージは機能するはずです。そうしないと、マージ ツールが表示され、競合を解決する必要があります。マージを chageset としてコミットします。[c]
[d]
[e]
[バツ] - - - - - - - 。
/ \
old-dot-net: ... [a] --- [b] --- [c] --- [d] --- [e]
[x]
これで、.Net 2.0 互換コードに変更が組み込まれました。
に変更があるたびに、これを繰り返しますnew-dot-net
。さらに機能が追加されたとしましょう:
new-dot-net: ... [a] --- [b] --- [x] --- [y] --- [z]
それらを引っ張った後、old-dot-net
あなたは得る
[x] --------------.---- [y] --- [z]
/ \
old-dot-net: ... [a] --- [b] --- [c] --- [d] --- [e]
そして、マージして次のよう[e]
にし[z]
ます。
[x] --------------.---- [y] --- [z]
/ \ \
old-dot-net: ... [a] --- [b] --- [c] --- [d] --- [e] ----------- [f]
覚えておくべき重要な部分は次のとおりです。
- で新しい機能を作成し
new-dot-net
ます。
- 変更をプルする
old-dot-net
- から
old-dot-net
へは絶対に押さないnew-dot-net
でください。
での変更が でnew-dot-net
不要であることが判明したold-dot-net
場合でも、それを取り込んでマージする必要があります。ただし、ダミーのマージを実行します。ヘッドが[w]
と
で、キープし[g]
たい場合は、[g]
% HGMERGE=true hg merge -y
% hg revert --all --rev g
% hg commit -m 'Dummy merge with y.'
秘訣は、結果を気にせずにマージを行い、すべての変更を元に戻し、変更されていない作業コピーをマージとしてコミットすることです。[w]
そうすれば、世界に「と
[g]
の組み合わせ」を伝えることができます[g]
。つまり、 の変更を破棄できます[w]
。new-dot-net
afterで行われた新しい変更は、[w]
通常どおりマージできます。