From d5257fb3c1decc1eff296a0ae2afbcaee28d0f2c Mon Sep 17 00:00:00 2001 From: Pat Thoyts Date: Sat, 7 Aug 2010 20:32:13 +0100 Subject: [PATCH] git-gui: handle textconv filter on Windows and in development When developing/testing we run git-gui.sh directly and the makefile configured variables are not properly set. Configure the new shellpath accessor to handle this case. On Windows we may not find the shell so in this case revert to simply executing the filter command without the shell intermediate. Signed-off-by: Pat Thoyts --- git-gui.sh | 9 ++++++++- lib/blame.tcl | 9 +++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index 8ade423eb..0d5c5e389 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -139,7 +139,14 @@ if {$_trace >= 0} { } proc shellpath {} { - global _shellpath + global _shellpath env + if {[string match @@* $_shellpath]} { + if {[info exists env(SHELL)]} { + return $env(SHELL) + } else { + return /bin/sh + } + } return $_shellpath } diff --git a/lib/blame.tcl b/lib/blame.tcl index 77656d367..61e358f96 100644 --- a/lib/blame.tcl +++ b/lib/blame.tcl @@ -461,8 +461,13 @@ method _load {jump} { if {$commit eq {}} { if {$do_textconv ne 0} { # Run textconv with sh -c "..." to allow it to - # contain command + arguments. - set fd [open |[list [shellpath] -c "$textconv \"\$0\"" $path] r] + # contain command + arguments. On windows, just + # call the filter command. + if {![file executable [shellpath]]} { + set fd [open |[linsert $textconv end $path] r] + } else { + set fd [open |[list [shellpath] -c "$textconv \"\$0\"" $path] r] + } } else { set fd [open $path r] } -- 2.30.2