| 開発者 | AT&T ベル研究所 |
|---|---|
| 初回リリース | 1979年1月 |
| オペレーティング·システム | UnixおよびUnixライク |
| タイプ | 指示 |
diff3 は、 3 つのファイルを比較し、それらの違いを表示するUnixユーティリティです。diff3 は、 3 方向マージを実装して、ファイルをマージすることもできます。
歴史と実装
diff3もともとは1979年のUnixバージョン7で登場しました。非常によく似たバージョンがBerkeley Software Distribution (BSD)で発見され、OpenBSDやおそらくSolarisに継承されました。[1] [2]
最近の Unix 系システムのほとんど、FreeBSD や NetBSD のような BSD 由来のものでも、diff3 はdiffutils (旧GNU Tools ) のGNUバージョンです。このバージョンは に依存せずに独自にファイルをマージする機能を持っています。内部的に を呼び出して比較を行いますが、他の互換性のあるツールも使用できます。[3]eddiff
このコマンドは、一般的なGNU UnixライクなユーティリティのネイティブWin32ポートのUnxUtilsコレクションの一部として、Microsoft Windows用の個別のパッケージとして利用できます。 [4]
「Diff3」は、3 方向マージ アルゴリズム、具体的には最初のソースから生じた 2 つの異なる diff を調整するアルゴリズムの総称にもなっています。
共通の祖先からの融合
2 人のユーザーが同じファイルのコピーに変更を加えた場合、diff3 は、競合に関する警告とともに両方の変更セットを含むマージされた出力を生成できます。diff3 は、一度に 2 つの変更セットをマージすることにより、3 つ以上の変更セットをファイルにマージできます。
diff3 は、2 つの変更されたバージョンからの変更を共通の以前のバージョンに組み込むことができます。これにより、ユーザーは 2 つの新しいファイルによって表される変更のセットをマージできます。これは、次のようなコマンドを使用して有効にできますdiff3 mine older yours。
olderこれは、ファイル からファイルを減算しyoursてその結果をファイル に追加するmineか、またはにmine変わる変更を にマージするのと同じです。このマージは、 と が各変更の近傍で一致する限り、明確に定義されます。3 つの入力ファイルがすべて異なる場合、または のみが異なる場合は、これは当てはまりません。これは競合です。3 つの入力ファイルがすべて異なる場合、競合は重複です。
olderyoursmineolderolder
diff3 には、重複や競合を処理するためのいくつかの方法があります。重複や競合を省略したり、重複のみを選択したり、特殊な行で競合をマークしたりでき<<<<<<<ます>>>>>>>。
diff3 は、マージ結果をedスクリプトとして出力し、これを最初のファイルに適用してマージされた出力を生成することができます。ただし、マージされた出力を直接生成すると、ed の問題がいくつか回避されます。
参照
参考文献
外部リンク
- Diff3の正式な調査
- GNU diffutils マニュアル、「3 つのファイルの比較」および「共通の祖先からのマージ」
