diff3マージ条件が明確に定義されているかどうかはどうすればわかりますか?

diff3マージ条件が明確に定義されているかどうかはどうすればわかりますか?

存在するディフチルマニュアル

diff3 mine older yours

パラメータがアルファベット順になっていることに注意してください。順序を覚えておくことができます。

これを自分の結果から以前の結果を減算し、その結果を自分の結果に追加するか、それを自分の変更にマージして、以前の変更をユーザーの結果にマージすると考えることができます。このマージは、次の場合によく定義されます。私は、各変更の近くの以前のものと一致します。。これは本当ではありません3つの入力ファイルがすべて異なる場合または年齢が異なるとき;私たちはこれを葛藤と呼びます。 3つの入力ファイルがすべて異なる場合、競合はネストと呼ばれます。

...

'-e'、'-3'、および '-x' オプションのみ選択マージされていない変更、つまり私の変更はあなたの変更とは異なります。;彼らは無視する昔のものからあなたのものまで、私とあなたのものと同じなぜなら、そのような変更がすでにマージされていると仮定しているからです。

「各変更の近くの私との古い一致」とはどういう意味ですか?

「古いものだけが違う時」とは、私があなたのようなものですが、古いものとは異なるという意味ですか?合わせるのは簡単ではありませんか?私のものを使ってもいいですか、それともあなたのものを使ってもいいですか?この場合、マージが明確に定義されていないのはなぜですか?

3つのケースが可能なすべての状況に対処する方法:

  • 「それぞれの変化の近くで私と古いものが一致したとき」

  • 「3つの入力ファイルがすべて異なる場合」

  • 「年齢だけ違う時」?

「古いものからあなたのものに変わったもの、私のものもあなたのようなもの」というのは、「古いものだけが違う時」のようなものか?

ありがとうございます。

ベストアンサー1

「各変更の近くの私との古い一致」とはどういう意味ですか?

「これらすべての変更の近くで、my and old match」は、「older」と「your」の間のすべての変更を考慮すると、変更のコンテキストが「my」でも見つかることを意味します。つまり、誰もが「old」と「yours」の間を変更する限り、「私のもの」と「old」は同じです。考える

mine            other           yours
------------------------------------------------
Some text       Some text       Some text
Some more text  Some more test  Changed text
Continues       Continues       Continues
Mine changes    This is gone    This is gone
The file ends   The file ends   The file ends

1行は「other」と「my」の間で異なり、もう1行は「other」と「your」の間で異なります。 「other」から「your」への変更を見ると、「my」で同じコンテキストを見つけることができるため、変更はあいまいさや衝突なしに「my」に適用される可能性があります。

「古いものだけが違う時」とは、私があなたのようなものですが、古いものとは異なるという意味ですか?

はい。

合わせるのは簡単ではありませんか?私のものを使ってもいいですか、それともあなたのものを使ってもいいですか?この場合、マージが明確に定義されていないのはなぜですか?

「明確に定義された」の定義は、「older」から「yours」に変更されたコンテキストが「mine」のコンテキストと同じであることです。 「my」と「your」が「old」と同じで、異なる場合、定義上の変更はあいまいです。

驚くべきことかもしれませんが、3方向マージの基本原則は、競合によって同じコンテンツが発生した場合でも、ユーザーがそれを識別して確認する必要があることです。例はありませんが、「mine」と「your」の特定の行は同じですが、他の変更がマージされると、マージされた結果の現在の状態は理想的ではありません。

別に考えると、3方向マージの目的は、2つの異なる記録、すなわち「古い」から「私のもの」への歴史と「古い」から「あなたのもの」への歴史を調和させることです。 2つの履歴が同じ内容に達しても、盲目的に適用するのではなく、再評価が必要です。

開発者は、およびオプションを使用してdiff3これらの変更を頻繁に適用する必要があることを知っています。-e-3-x

これら 3 つのシナリオは、すべての可能なシナリオをどのように扱いますか?

最初のケースでは全体的な分析を説明していますが、残りの2つのケースは個々の変化の文脈で理解する必要があると思います。各変更(「前」から「あなたの」まで)について、この3つのケースをすべて考慮すると、次のようになります(「前」と「あなたの」は異なることを覚えておいてください)。

  • 「my」と「old」は同じ
  • 「私のもの」は「古いもの」とは異なり、「私のもの」は「あなたのもの」とは異なります
  • 「私のもの」と「古いもの」は異なりますが、「私のもの」と「あなたのもの」は同じです。

真理値表を検討してください。

mine == older    mine == yours    older == yours    Case
--------------------------------------------------------
     Yes              Yes               Yes         N/A
     Yes              Yes               No          Imp.
     Yes              No                Yes         N/A
     Yes              No                No          1
     No               Yes               Yes         N/A
     No               Yes               No          3
     No               No                Yes         N/A
     No               No                No          2

N / Aは、そのケースが考慮されていないことを意味します。 「前」から「あなたの」に変更はありません。子供の鬼。これは、このような状況が不可能であることを意味します(平等の転移性を介して)。これは、3つのシナリオがすべての可能性をカバーするのに十分であることを示しています。

「古いものからあなたのものに変わったもの、私のものもあなたのようなもの」というのは、「古いものだけが違う時」のようなものか?

はい。

おすすめ記事