diff

diff は2つのテキストファイルを unified diff で比較し、同梱の patch は元のコンテキストが一致する場合だけ変更を適用します。パッチ保存と元ファイル置換は明示的な操作です。

開発バージョン 1.1.3安定版エイリアス: patch
lil-terminal

概要

diffpatch を一つのレビュー手順として使います。まず変更を確認し、必要なら保存し、別の出力先へ適用してから、最後に元ファイルを置き換えるか判断します。

適用する前に変更内容を確認

実用的な流れは diff old.php new.php -o change.patch、続いて patch old.php change.patch です。既定では別の .patched ファイルを作成し、元ファイルを置き換えるのは -r のときだけです。

構文

lil-terminal
diff <old> <new> [options]

リファレンス

diff <old> <new>

3 行のコンテキスト付き unified diff を表示する

diff <old> <new> -c <lines>

コンテキストを 0〜20 行に設定する

diff <old> <new> -q

ファイルが異なるかだけを表示する

diff <old> <new> -o <patch>

diff をパッチファイルとして保存する

patch <file> <patch>

パッチ結果を <file>.patched に書く

patch <file> <patch> -o <dst>

別のファイルへ結果を書く

patch <file> <patch> -r

元ファイルを原子的に置き換える

patch <file> <patch> -f

-r 以外の既存出力を置き換えられるようにする

確認してから適用

diff old.php new.php -o change.patch は2つのソースを変更せず、確認した差分を保存します。patch old.php change.patch は既定で別の .patched を作り、-o <dst> で別の出力先、-r で元ファイル置換を選びます。

制限と安全性

各テキストファイルは 4 MiB、20000 行までで、バイナリは拒否されます。patch は書き込み前に全コンテキスト行を検証するため、別バージョン向けのパッチは変更前に失敗します。

インタラクティブな sandbox プレビュー

用意された例をページ上でそのまま実行できます。結果は事前に生成されてブラウザに表示され、サーバーではターミナルコマンドを実行しません。

3 行のコンテキスト付き unified diff を表示する

インストールと管理

現在の互換バージョンをインストールします。全機能は Base、縮小版は Minimum を選び、すでに導入済みのモジュール更新には upgrade を使います。

Base と Minimum は同じ現在のモジュールリリースの二つのパッケージです。

Base パッケージ

ローカル参照と公開済みの全モードを含む完全パッケージをインストールします。

install diff
Minimum パッケージ

縮小パッケージをインストールします。ローカルリファレンスは含まれず、help <cmd> -i で現在のサーバーリファレンスを開きます。

install diff -m
正確な公開版

この公開済みバージョンを正確に指定してインストールします。

install diff -v 1.1.3
確認または更新

upgrade が互換性を確認し、必要な場合だけブロックを置換します。

upgrade diff
モジュールを削除

コアや他のモジュールに触れず拡張ブロックを削除します。

install diff -u

例はコピーできますが、サイトは実行しません。実プロジェクトではパス、権限、破壊的オプションを確認してください。

3 行のコンテキスト付き unified diff を表示する
cd \sandbox | diff workspace/original.txt workspace/updated.txt
--- workspace/original.txt
+++ workspace/updated.txt
@@ -1,2 +1,2 @@
-alpha
+alpha reviewed
コンテキストを 0〜20 行に設定する
diff workspace/original.txt workspace/updated.txt -c 1
--- workspace/original.txt
+++ workspace/updated.txt
@@ -1,2 +1,2 @@
-alpha
+alpha reviewed
ファイルが異なるかだけを表示する
diff workspace/original.txt workspace/updated.txt -q
Different  yes
Old        workspace/original.txt
New        workspace/updated.txt
Diff をパッチファイルとして保存する
diff workspace/original.txt workspace/updated.txt -o tmp/workspace.patch
Saved  tmp/workspace.patch
Size   148 B
パッチ結果を <file>.patched に書く
patch workspace/original.txt tmp/workspace.patch
Source   workspace/original.txt
Patched  workspace/original.txt.patched

patchdiff モジュールが提供し、システムの patch コマンドに依存せず unified diff を制御して適用します。

別のファイルへ結果を書く
patch workspace/original.txt tmp/workspace.patch -o tmp/patched.txt
Source   workspace/original.txt
Patched  tmp/patched.txt

patchdiff モジュールが提供し、システムの patch コマンドに依存せず unified diff を制御して適用します。

-r 以外の既存出力を置き換えられるようにする
patch workspace/original.txt tmp/workspace.patch -o tmp/current.txt -f
Source   workspace/original.txt
Patched  tmp/current.txt
Replace  explicit

patchdiff モジュールが提供し、システムの patch コマンドに依存せず unified diff を制御して適用します。

元ファイルを原子的に置き換える
patch workspace/original.txt tmp/workspace.patch -r
Source   workspace/original.txt
Patched  workspace/original.txt

patchdiff モジュールが提供し、システムの patch コマンドに依存せず unified diff を制御して適用します。

存在しない比較ファイルを扱う
diff missing.txt workspace/updated.txt
ファイルが見つかりません: missing.txt

この例で使うファイル: sandbox/workspace/original.txt

例では、保護されたドキュメント用 /sandbox/ ワークスペースのファイルまたはディレクトリを使います。

alpha
beta
gamma

関連ドキュメント

現在の公開版

v1.1.32026-08-08

最初の安定版

diff の現在の安定版。diff は2つのテキストファイルを unified diff で比較し、同梱の patch は元のコンテキストが一致する場合だけ変更を適用します。