ユニファイド形式 (Unified format)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/08 14:15 UTC 版)
「diff」の記事における「ユニファイド形式 (Unified format)」の解説
ユニファイド形式(unified format、unidiffとも呼ぶ)はコンテキスト形式における技術的改良を継承し、より少量の出力でより読みやすい形式を追求し生まれた。通常、ユニファイド形式は「-u」オプションにより指定される。この出力形式はpatchプログラムへの入力形式として使われることが多い。現在、多くのプロジェクトにおいてdiff出力によるパッチを投稿する際にはこのユニファイド形式を使うよう推奨している。このため、このユニファイド形式がソフトウェア開発者の間でのいわば共通形式となっている。 ユニファイド形式diffを最初に開発したのはウェイン・デイヴィソンで、1990年8月のことであった(comp.sources.miscのVolume 14にunidiffとして投稿)。リチャード・ストールマンがGNUプロジェクトのdiffコマンドにこの機能を1ヶ月後に加え、1991年1月リリースのGNU diff 1.15から使えるようになった。GNU diffではその後任意の形式のdiff出力を扱えるようコンテキスト出力サポートの拡張が進められた。GNU diffおよびdiff3は現在他のdiff系ツールやpatch系ツールと共にdiffutilsパッケージに含まれている。EmacsにはEdiffツールとしてパッチが変更する内容を表示しユーザが動的にパッチファイルの変更点を編集・マージすることができるインタフェースを持っている。 ユニファイド出力形式ではヘッダの2行はコンテキスト形式と同一のもので始まるものの、元ファイルは「---」で示され新ファイルは「+++」で示される。これに続く変更箇所ではファイル間の相違が示されるが、非変更箇所は「 」(スペース)、挿入行は「+」、削除行は「-」で始まる行で示される。 変更箇所ではその範囲を示す行番号・行数の情報に続いて行の挿入・削除、非変更箇所などが出力される。範囲を示す情報は2つの@マークで囲まれて出力され、前述のコンテキスト出力で示された内容は1行にまとめられた形で出力される。変更箇所の範囲情報の出力形式を以下に示す: @@ -R +R @@ 変更箇所の範囲情報は2つの範囲についての情報を含んでいる。一方はマイナス記号が頭に付いた元ファイルにおける変更箇所を示すものであり、もう一方はプラス記号が頭に付いた変更後のファイルにおける変更箇所を示している。範囲を示すRはl,sという形式となり、lは変更箇所の開始行、sはそれぞれのファイルにおける変更箇所の行数を示している。GNU diffの大半のバージョンでは、Rにおいてsがデフォルトの1である場合にはカンマ以降を省略した形式も使える。 元ファイルの変更箇所の範囲を示す情報では非変更箇所行・削除行についての行数分も含んだ情報が提示される。一方、変更後ファイルにおける範囲情報でも非変更箇所行・挿入行の分も含んだ情報が出力される。変更箇所における行数と範囲情報が示している行数が一致しない場合、その出力は不正な形式として拒絶される。 ある行が変更された場合、削除+挿入として表現される。元ファイルと変更後ファイルの変更箇所が同一の場所に現われ相互に隣り合って出力されることになる。以下のその一例を示す。 -check this dokument. On+check this document. On diff -u original newというコマンドを実行した際は、以下のような出力が行われる。: --- /path/to/original ''timestamp''+++ /path/to/new ''timestamp''@@ -1,3 +1,9 @@+This is an important+notice! It should+therefore be located at+the beginning of this+document!+ This part of the document has stayed the same from version to@@ -5,16 +11,10 @@ be shown if it doesn't change. Otherwise, that would not be helping to-compress the size of the-changes.--This paragraph contains-text that is outdated.-It will be deleted in the-near future.+compress anything. It is important to spell-check this dokument. On+check this document. On the other hand, a misspelled word isn't the end of the world.@@ -22,3 +22,7 @@ this paragraph needs to be changed. Things can be added after it.++This paragraph contains+important new additions+to this document. diff出力形式の中には特定のプログラムや一定の利用法の中で変更や拡張が加えられているものもある。例えばバージョン管理システムでは、diffのヘッダ出力部分のタイプスタンプの箇所に版番号・バージョン番号や「ワーキングコピー」その他のコメント類を出力する場合もある。また複数のdiff出力を一つにまとめた形式が使えるものもある。この場合各変更ファイルのヘッダとして以下のような形式が使われる。: Index: path/to/file.cpp ===================================================================
※この「ユニファイド形式 (Unified format)」の解説は、「diff」の解説の一部です。
「ユニファイド形式 (Unified format)」を含む「diff」の記事については、「diff」の概要を参照ください。
- ユニファイド形式のページへのリンク