summaryrefslogtreecommitdiff
path: root/git-gui/lib/shortcut.tcl
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-07-12 14:14:51 -0700
committerJunio C Hamano <gitster@pobox.com>2007-07-12 14:14:51 -0700
commitb9dcf846e20ed5287e239c9a0942c5d150081bab (patch)
treed6a6ae6c6240ac014f47c32e9ecf09b0c50c2dab /git-gui/lib/shortcut.tcl
parent237ce836e770e8ead12a14ee4a8170009fa4a40b (diff)
parentb215883de9322b8b475a04b4768d6ba5455373d1 (diff)
downloadgit-b9dcf846e20ed5287e239c9a0942c5d150081bab.tar.gz
Merge commit 'git-gui/master'
* commit 'git-gui/master': (36 commits) git-gui: Change prior tree SHA-1 verification to use git_read git-gui: Include a space in Cygwin shortcut command lines git-gui: Use sh.exe in Cygwin shortcuts git-gui: Paper bag fix for Cygwin shortcut creation git-gui: Improve the Windows and Mac OS X shortcut creators git-gui: Teach console widget to use git_read git-gui: Perform our own magic shbang detection on Windows git-gui: Treat `git version` as `git --version` git-gui: Assume unfound commands are known by git wrapper git-gui: Correct gitk installation location git-gui: Always use absolute path to all git executables git-gui: Show a progress meter for checking out files git-gui: Change the main window progress bar to use status_bar git-gui: Extract blame viewer status bar into mega-widget git-gui: Allow double-click in checkout dialog to start checkout git-gui: Default selection to first matching ref git-gui: Unabbreviate commit SHA-1s prior to display git-gui: Refactor branch switch to support detached head git-gui: Refactor our ui_status_value update technique git-gui: Better handling of detached HEAD ...
Diffstat (limited to 'git-gui/lib/shortcut.tcl')
-rw-r--r--git-gui/lib/shortcut.tcl57
1 files changed, 34 insertions, 23 deletions
diff --git a/git-gui/lib/shortcut.tcl b/git-gui/lib/shortcut.tcl
index ebf72e4452..c36be2f3cd 100644
--- a/git-gui/lib/shortcut.tcl
+++ b/git-gui/lib/shortcut.tcl
@@ -9,11 +9,15 @@ proc do_windows_shortcut {} {
-title "[appname] ([reponame]): Create Desktop Icon" \
-initialfile "Git [reponame].bat"]
if {$fn != {}} {
+ if {[file extension $fn] ne {.bat}} {
+ set fn ${fn}.bat
+ }
if {[catch {
+ set ge [file normalize [file dirname $::_git]]
set fd [open $fn w]
puts $fd "@ECHO Entering [reponame]"
puts $fd "@ECHO Starting git-gui... please wait..."
- puts $fd "@SET PATH=[file normalize [gitexec]];%PATH%"
+ puts $fd "@SET PATH=$ge;%PATH%"
puts $fd "@SET GIT_DIR=[file normalize [gitdir]]"
puts -nonewline $fd "@\"[info nameofexecutable]\""
puts $fd " \"[file normalize $argv0]\""
@@ -42,12 +46,15 @@ proc do_cygwin_shortcut {} {
-initialdir $desktop \
-initialfile "Git [reponame].bat"]
if {$fn != {}} {
+ if {[file extension $fn] ne {.bat}} {
+ set fn ${fn}.bat
+ }
if {[catch {
set fd [open $fn w]
set sh [exec cygpath \
--windows \
--absolute \
- /bin/sh]
+ /bin/sh.exe]
set me [exec cygpath \
--unix \
--absolute \
@@ -56,18 +63,12 @@ proc do_cygwin_shortcut {} {
--unix \
--absolute \
[gitdir]]
- set gw [exec cygpath \
- --windows \
- --absolute \
- [file dirname [gitdir]]]
- regsub -all ' $me "'\\''" me
- regsub -all ' $gd "'\\''" gd
- puts $fd "@ECHO Entering $gw"
+ puts $fd "@ECHO Entering [reponame]"
puts $fd "@ECHO Starting git-gui... please wait..."
puts -nonewline $fd "@\"$sh\" --login -c \""
- puts -nonewline $fd "GIT_DIR='$gd'"
- puts -nonewline $fd " '$me'"
- puts $fd "&\""
+ puts -nonewline $fd "GIT_DIR=[sq $gd]"
+ puts -nonewline $fd " [sq $me]"
+ puts $fd " &\""
close $fd
} err]} {
error_popup "Cannot write script:\n\n$err"
@@ -84,6 +85,9 @@ proc do_macosx_app {} {
-initialdir [file join $env(HOME) Desktop] \
-initialfile "Git [reponame].app"]
if {$fn != {}} {
+ if {[file extension $fn] ne {.app}} {
+ set fn ${fn}.app
+ }
if {[catch {
set Contents [file join $fn Contents]
set MacOS [file join $Contents MacOS]
@@ -117,20 +121,27 @@ proc do_macosx_app {} {
close $fd
set fd [open $exe w]
- set gd [file normalize [gitdir]]
- set ep [file normalize [gitexec]]
- regsub -all ' $gd "'\\''" gd
- regsub -all ' $ep "'\\''" ep
puts $fd "#!/bin/sh"
- foreach name [array names env] {
- if {[string match GIT_* $name]} {
- regsub -all ' $env($name) "'\\''" v
- puts $fd "export $name='$v'"
+ foreach name [lsort [array names env]] {
+ set value $env($name)
+ switch -- $name {
+ GIT_DIR { set value [file normalize [gitdir]] }
+ }
+
+ switch -glob -- $name {
+ SSH_* -
+ GIT_* {
+ puts $fd "if test \"z\$$name\" = z; then"
+ puts $fd " export $name=[sq $value]"
+ puts $fd "fi &&"
+ }
}
}
- puts $fd "export PATH='$ep':\$PATH"
- puts $fd "export GIT_DIR='$gd'"
- puts $fd "exec [file normalize $argv0]"
+ puts $fd "export PATH=[sq [file dirname $::_git]]:\$PATH &&"
+ puts $fd "cd [sq [file normalize [pwd]]] &&"
+ puts $fd "exec \\"
+ puts $fd " [sq [info nameofexecutable]] \\"
+ puts $fd " [sq [file normalize $argv0]]"
close $fd
file attributes $exe -permissions u+x,g+x,o+x