このツールの動作
二つの文章が入り、統一形式の差分が出ます。
version: 1 version: 2
name: demo name: demo
port: 8080 port: 8080
debug: true
@@ -1,3 +1,4 @@
-version: 1
+version: 2
name: demo
port: 8080
+debug: true
比較には Myers のアルゴリズムを使います。git diff の後ろにあるものと同じです。ですから結果は、最初に見つかった変更ではなく、いちばん小さな変更の集まりになります。同じ文章どうしなら結果は空で、それが知りたかった答えです。
出力の読み方
@@ -1,3 +1,4 @@— 変更の位置です。左は1行目から三行、右は1行目から四行。-— その行は最初の文章にあり、二つめには無い。+— その行は二つめにあり、最初には無い。- 先頭の空白 — 変わっていない行で、文脈として示されます。前後に三行ずつ、Git の既定と同じです。
同じに見える二行が違うとき
-a
+a
見て分かるものは何もありませんが、同じ行ではありません。よくある犯人は、行末の空白、片方だけのタブ、そして Unix の \n に対する Windows の \r\n です。二台の機械で編集されたファイルは、三つとも集めています。比較は文字そのものを読むので、見せられない違いを告げることになります。
Unix の cat -A は行末に $ を、復帰には ^M を表示します。たいていの編集ソフトには「空白を表示」の切り替えがあります。どちらでも、違いは一瞬で目に見えるようになります。
しないこと
- 単語単位の強調。 一文字変われば、その行ぜんぶに印が付きます。
- 改名や移動の検出。 移された固まりは、移動ではなく、削除と追加として読まれます。
- 三方向のマージ。 二つの文章を比べるだけで、まとめはしません。
\ No newline at end of fileの表示。 末尾の改行がある文章と無い文章の違いは、空行がひとつ加わった形で現れます。同じことを、より素朴に伝えているだけです。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。