Code

git-gui: Don't show content of untracked binary files.
authorShawn O. Pearce <spearce@spearce.org>
Tue, 23 Jan 2007 07:08:09 +0000 (02:08 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Tue, 23 Jan 2007 07:08:09 +0000 (02:08 -0500)
A binary file can be very large, and showing the complete content of
one is horribly ugly and confusing.  So we now use the same rule that
core Git uses; if there is a NUL byte (\0) within the first 8000 bytes
of the file we assume it is binary and refuse to show the content.

Given that we have loaded the entire content of the file into memory
we probably could just afford to search the whole thing, but we also
probably should not load multi-megabyte binary files either.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh

index 6ccd4113d8582bb2a9a3b4f806946f43e11315e7..9136e7fe9844f57b106280e4d9e033adb7a9f64c 100755 (executable)
@@ -637,6 +637,9 @@ proc show_diff {path w {lno {}}} {
                        error_popup "Error loading file:\n\n$err"
                        return
                }
+               if {[string first "\0" [string range $content 0 8000]] != -1} {
+                       set content {* Binary file (not showing content).}
+               }
                $ui_diff conf -state normal
                $ui_diff insert end $content
                $ui_diff conf -state disabled