5

差分を作成するときはいつでも、次のコマンドを使用することがわかりました。

diff -Naur old new > file.patch

-Naurこのスイッチは何だろうと思っていました。この名前の由来とその専門とは正確には何ですか? もちろん、違いを発見するために Naur オプションなしで diff プログラムを実行することもできます。しかし、私はそれについてもう少し情報を探しています。

4

2 に答える 2

17

これはすでに答えがある古い質問だと思いますが、私が個人的に探していた深さには入りませんでした. だから私は以下に投稿している私自身の研究をしました:

-Naurこのスイッチは何だろうと思っていました。

パッチ作成サイトに関するこの公式 GNU サイトは、それを非常によく説明しています。-Naur次のように分類される一連の 4 つのdiffコマンド スイッチです。

  • -N: 存在しないファイルを空として扱います。パッチがファイルを作成および削除できるようにします。
  • -a: すべてのファイルをテキストとして扱います。パッチによる非テキスト (別名: バイナリ) ファイルの更新を許可します。
  • -u: 統合コンテキストのデフォルトの 3 行を設定します。これにより、有用なタイムスタンプとコンテキストが生成されます。
  • -r: 見つかったサブディレクトリを再帰的に比較します。パッチがサブディレクトリを更新できるようにします。

フラグは-u私を混乱させましたが、diff ユーティリティのウィキペディアのページには適切な説明があります。大胆な強調は私のものです:

統合形式 (または unidiff) は、コンテキスト形式によって行われた技術的な改善を継承しますが、古いテキストと新しいテキストがすぐ隣り合って表示される小さな diff を生成します。統一フォーマットは、通常、「-u」コマンド ライン オプションを使用して呼び出されます。この出力は、多くの場合、パッチ プログラムへの入力として使用されます。多くのプロジェクトでは、統一された形式で「差分」を送信することを具体的に要求しているため、統一された差分形式はソフトウェア開発者間で交換するための最も一般的な形式になっています。

統合コンテキスト差分は、1990 年 8 月に Wayne Davison によって最初に開発されました (comp.sources.misc の Volume 14 に登場した unidiff で)。Richard Stallman は、1 か月後に GNU Project の diff ユーティリティに統一された diff サポートを追加し、この機能は 1991 年 1 月にリリースされた GNU diff 1.15 でデビューしました。GNU diff はそれ以来、diff の任意の書式設定を可能にするためにコンテキスト形式を一般化しました。

この形式は、元のファイルの前に「---」が付き、新しいファイルの前に「+++」が付くことを除いて、コンテキスト形式と同じ 2 行のヘッダーで始まります。これに続くのは、ファイル内の行の違いを含む 1 つ以上の変更ハンクです。変更されていないコンテキスト行の前にはスペース文字が、追加行の前にはプラス記号が、削除行の前にはマイナス記号が付けられます。

これは基本的に、この-uフラグにより​​、diff が一般に知られ、認識され、受け入れられている形式でパッチ データを出力できるようにすることを意味します。

于 2015-08-21T05:44:13.960 に答える