diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-07-12 14:14:51 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-07-12 14:14:51 -0700 |
commit | b9dcf846e20ed5287e239c9a0942c5d150081bab (patch) | |
tree | d6a6ae6c6240ac014f47c32e9ecf09b0c50c2dab /git-gui/lib/shortcut.tcl | |
parent | 237ce836e770e8ead12a14ee4a8170009fa4a40b (diff) | |
parent | b215883de9322b8b475a04b4768d6ba5455373d1 (diff) | |
download | git-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.tcl | 57 |
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 |