【SourceTree】「ファイルのサイズまたは形式のためdiffを止めた」からdiffを表示させる方法

SourceTreeの「サイズ超過エラー」画面

SourceTreeでdiff(2つのファイル間の違い)を確認しようとしたら、こんな表示になってdiffが見れなくなっていました。

何が起きた?

「ファイルのサイズまたは形式のためdiffを止めた」とエラーが表示されました。
なんか日本語が少しおかしいけど、ファイルの何かが不正でdiffが表示できなくなっているのは分かりました。

英語版では、「Diff was suppressed because of file size or pattern.」とエラー表示されますね。

ご丁寧にエラー文の下に[設定]ボタンを置いてくれているので、これを押すと以下の設定画面が表示されます。

SourceTreeの「Diff設定」画面

デフォルトで[サイズ制限(テキスト)]が1024KBに設定してありました。
私はwordpressのDBダンプをgitで管理してて、そのファイルサイズが設定の1024KBを超えたためdiffが見れなくなったことに、ここで気づきました。

確かにファイルサイズは1.1MBになっていて、サイズ制限1024KB(=1MB)を超えていることが確認できました。

$ ls -lh dump_local.sql
-rw-rw-r--. 1 vagrant vagrant 1.1M  9月 15 18:59 dump_local.sql
$

diffを表示させる方法

この状態から以下のいずれかの操作をすることで、diffを表示させることができます。

  • 上記のエラーを解消する
  • 外部Diffツールを利用する

エラーを解消する

やることは簡単で、この設定画面で[サイズ制限(テキスト)]の値を増加させます。
増加幅が小さいと、ファイルサイズが大きくなった時にすぐに再設定する手間が発生するので、私はとりあえず10倍の10240KB(=10MB)に設定しました。

SourceTreeの「Diff設定」画面のサイズ制限

そうすると無事エラーが解消し、diffが表示されました。

SourceTreeのファイルステータス画面

おそらくこの設定は、ファイルサイズが大きすぎてSourceTreeの挙動が重くならないように予防するための設定だと思います。
重くなった場合はこの値を調節して重くならない水準を探るか、以下の外部Diffツールを試してみてください。

外部Diffツールを使う

こちらの記事に、SourceTreeで外部Diffツールの使い方をまとめました。

SourceTreeの見にくい縦並びのdiffの表示ですが、Diff外部ツールとして「P4Merge」を使うと横並びで画面いっぱいにdiffを表示でき、両者のコードを効率よく比較することができます。

まとめ

「ファイルのサイズまたは形式のためdiffを止めた」というエラーが出た時には、

  • サイズ制限の値を増加させる方法
  • 外部Diffツールを使う方法

でdiffを表示させることができます。

状況に応じて、使いやすい方を試してみてください。