From: Michele Ballabio Date: Sun, 9 Sep 2007 19:04:45 +0000 (+0200) Subject: git-gui: show unstaged symlinks in diff viewer X-Git-Tag: gitgui-0.8.3~9 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=2d19f8e921a1cdc562783814747819b0d5a12641;p=git.git git-gui: show unstaged symlinks in diff viewer git-gui has a minor problem with regards to symlinks that point to directories. git init mkdir realdir ln -s realdir linkdir git gui Now clicking on file names in the "unstaged changes" window, there's a problem coming from the "linkdir" symlink: git-gui complains with error reading "file4": illegal operation on a directory ...even though git-gui can add that same symlink to the index just fine. This patch fix this by adding a check. [sp: Minor fix to use {link} instead of "link" in condition and to only open the path if it is not a symlink.] Signed-off-by: Michele Ballabio Signed-off-by: Shawn O. Pearce --- diff --git a/lib/diff.tcl b/lib/diff.tcl index e09e1257e..9eeff2ed3 100644 --- a/lib/diff.tcl +++ b/lib/diff.tcl @@ -85,11 +85,16 @@ proc show_diff {path w {lno {}}} { if {$m eq {_O}} { set max_sz [expr {128 * 1024}] if {[catch { - set fd [open $path r] - fconfigure $fd -eofchar {} - set content [read $fd $max_sz] - close $fd - set sz [file size $path] + if {[file type $path] == {link}} { + set content [file readlink $path] + set sz [string length $content] + } else { + set fd [open $path r] + fconfigure $fd -eofchar {} + set content [read $fd $max_sz] + close $fd + set sz [file size $path] + } } err ]} { set diff_active 0 unlock_index