Merge branch 'ml/windows-tie-loose-ends'

* ml/windows-tie-loose-ends:
  git-gui: use /cmd/git-gui.exe for shortcut
  git-gui: Windows tk_getSaveFile is not useful for shortcuts
  git-gui: let nice work on Windows
  git-gui: do not add directories to PATH on Windows

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
This commit is contained in:
Johannes Sixt
2025-07-31 19:20:22 +02:00
3 changed files with 35 additions and 37 deletions

View File

@@ -3,27 +3,41 @@
proc do_windows_shortcut {} {
global _gitworktree
set fn [tk_getSaveFile \
-parent . \
-title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \
-initialfile "Git [reponame].lnk"]
if {$fn != {}} {
if {[file extension $fn] ne {.lnk}} {
set fn ${fn}.lnk
}
# Use git-gui.exe if available (ie: git-for-windows)
set cmdLine [list [_which git-gui]]
if {$cmdLine eq {}} {
set cmdLine [list [info nameofexecutable] \
[file normalize $::argv0]]
}
if {[catch {
win32_create_lnk $fn $cmdLine \
[file normalize $_gitworktree]
} err]} {
error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"]
set desktop [safe_exec [list cygpath -mD]]
set link_file "Git [reponame].lnk"
set link_path [file normalize [file join $desktop $link_file]]
# on Windows, tk_getSaveFile dereferences .lnk files, so no simple
# filename chooser is available. Use the default or quit.
if {[file exists $link_path]} {
set answer [tk_messageBox \
-type yesno \
-title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \
-default yes \
-message [mc "Replace existing shortcut: %s?" $link_file]]
if {$answer == no} {
return
}
}
# Use git-gui.exe if found, fall back to wish + launcher
set link_arguments {}
set link_target [safe_exec [list cygpath -m /cmd/git-gui.exe]]
if {![file executable $link_target]} {
set link_target [_which git-gui]
}
if {![file executable $link_target]} {
set link_target [file normalize [info nameofexecutable]]
set link_arguments [file normalize $::argv0]
}
set cmdLine [list $link_target $link_arguments]
if {[catch {
win32_create_lnk $link_path $cmdLine \
[file normalize $_gitworktree]
} err]} {
error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"]
}
}
proc do_cygwin_shortcut {} {