2つのテキストからUnified Diffを生成する
Diff生成モードを使って2つのバージョンのテキストからUnified Diffを作成します。LCSアルゴリズムが最小限の変更を計算する仕組みを学びます。
Common Use Cases
詳細な説明
Unified Diffの生成
Diff生成モードは2つのテキストを受け取り、共有、他の場所での適用、参照用の保存が可能なUnified Diffを生成します。
使い方
- Diff生成モードに切り替え
- 左パネルにオリジナルテキストを貼り付け
- 右パネルに変更後テキストを貼り付け
- Diff生成をクリック
- 生成されたUnified Diffをコピー
例
オリジナル:
def hello():
print("Hello, World!")
def main():
hello()
変更後:
def hello(name="World"):
print(f"Hello, {name}!")
def goodbye(name="World"):
print(f"Goodbye, {name}!")
def main():
hello("Alice")
goodbye("Alice")
生成されるDiff:
--- a/original
+++ b/modified
@@ -1,5 +1,9 @@
-def hello():
- print("Hello, World!")
+def hello(name="World"):
+ print(f"Hello, {name}!")
+def goodbye(name="World"):
+ print(f"Goodbye, {name}!")
+
def main():
- hello()
+ hello("Alice")
+ goodbye("Alice")
LCSアルゴリズム
Diffジェネレーターは最長共通部分列(LCS)アルゴリズムを使用して最小限の変更セットを計算します:
- すべての行を比較する動的計画法テーブルを構築
- テーブルを逆追跡して共通行を特定
- LCSに含まれない行は追加または削除
- 周囲のコンテキスト行とともに変更をHunkにグループ化
コンテキスト行
デフォルトで生成されるDiffは各変更の前後3行のコンテキストを含み、diff -uの標準と一致します。
ユースケース
共有設定ファイルに変更を加え、差分のみをチームに送信する必要があります。ファイル全体を送る代わりにUnified Diffを生成し、受信者は変更のみを適用できます。