git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 0/4] git-gui: GIT_ASK_YESNO/GIT_ASKPASS patches from Git for Windows

From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
Date
Aug 28, 2025, 08:58 UTC
Message-ID
<pull.358.v2.git.1756371530.gitgitgadget@gmail.com>
In-Reply-To
<pull.358.git.gitgitgadget@gmail.com>

This is another set of patches from Git for Windows' fork that have been sitting there since 2010, providing cross-platform GUI helpers to ask the user a question or allow typing in a password.

This patch series was first submitted as https://github.com/patthoyts/git-gui/pull/5 which was ignored for almost three years, then re-submitted as https://github.com/prati0100/git-gui/pull/3 which was rejected in favor of a contribution by mail.

The patches are based on Git GUI's master branch at https://github.com/j6t/git-gui/.

Changes since v1:
 * Rebased to current master branch of Git GUI, resolving merge conflicts.
 * Dropped double empty line.
 * Skip yes/no functions in favor of inline exit 0/exit 1.
 * The --title option is now documented in the git-gui--askyesno script.
Heiko Voigt (1):
  git-gui: provide question helper for retry fallback on Windows
Johannes Schindelin (3):
  git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
  git-gui--askyesno: allow overriding the window title
  git-gui--askyesno (mingw): use Git for Windows' icon, if available
 Makefile          |  2 ++
 git-gui--askyesno | 63 +++++++++++++++++++++++++++++++++++++++++++++++
 git-gui.sh        |  6 +++++
 3 files changed, 71 insertions(+)
 create mode 100755 git-gui--askyesno
base-commit: e3923e3e90da55e12545b5ef5aa34f21e97409d8
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-358%2Fdscho%2Fgit-gui-askpass-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-358/dscho/git-gui-askpass-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/358
Range-diff vs v1:
 1:  58972068a230 ! 1:  08b106ebedb9 git-gui: provide question helper for retry fallback on Windows
     @@ git-gui--askyesno (new)
      +}
      +
      +${NS}::frame .t
     -+${NS}::label .t.m -text $prompt -justify center -width 400px
     -+.t.m configure -wraplength 400px
     ++${NS}::label .t.m -text $prompt -justify center -width 40
     ++.t.m configure -wraplength 400
      +pack .t.m -side top -fill x -padx 20 -pady 20 -expand 1
      +pack .t -side top -fill x -ipadx 20 -ipady 20 -expand 1
      +
      +${NS}::frame .b
      +${NS}::frame .b.left -width 200
     -+${NS}::button .b.yes -text Yes -command yes
     -+${NS}::button .b.no  -text No  -command no
     -+
     ++${NS}::button .b.yes -text Yes -command {exit 0}
     ++${NS}::button .b.no  -text No  -command {exit 1}
      +
      +pack .b.left -side left -expand 1 -fill x
      +pack .b.yes -side left -expand 1
     @@ git-gui--askyesno (new)
      +bind . <Key-Return> {exit 0}
      +bind . <Key-Escape> {exit 1}
      +
     -+proc no {} {
     -+	exit 1
     -+}
     -+
     -+proc yes {} {
     -+	exit 0
     -+}
     -+
      +wm title . "Question?"
      +tk::PlaceWindow .
      
       ## git-gui.sh ##
     -@@ git-gui.sh: set have_tk85 [expr {[package vcompare $tk_version "8.5"] >= 0}]
     +@@ git-gui.sh: set argv0dir [file dirname [file normalize $::argv0]]
       if {![info exists env(SSH_ASKPASS)]} {
     - 	set env(SSH_ASKPASS) [gitexec git-gui--askpass]
     + 	set env(SSH_ASKPASS) [file join $argv0dir git-gui--askpass]
       }
      +if {![info exists env(GIT_ASK_YESNO)]} {
     -+	set env(GIT_ASK_YESNO) [gitexec git-gui--askyesno]
     ++	set env(GIT_ASK_YESNO) [file join $argv0dir git-gui--askyesno]
      +}
     + unset argv0dir
       
       ######################################################################
     - ##
 2:  cb9f8c8158c5 ! 2:  e1aef533bfe8 git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
     @@ Commit message
          Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
      
       ## git-gui.sh ##
     -@@ git-gui.sh: set have_tk85 [expr {[package vcompare $tk_version "8.5"] >= 0}]
     +@@ git-gui.sh: set argv0dir [file dirname [file normalize $::argv0]]
       if {![info exists env(SSH_ASKPASS)]} {
     - 	set env(SSH_ASKPASS) [gitexec git-gui--askpass]
     + 	set env(SSH_ASKPASS) [file join $argv0dir git-gui--askpass]
       }
      +if {![info exists env(GIT_ASKPASS)]} {
      +	set env(GIT_ASKPASS) [gitexec git-gui--askpass]
      +}
       if {![info exists env(GIT_ASK_YESNO)]} {
     - 	set env(GIT_ASK_YESNO) [gitexec git-gui--askyesno]
     + 	set env(GIT_ASK_YESNO) [file join $argv0dir git-gui--askyesno]
       }
 3:  8cfc935cdba3 ! 3:  2e7e2c1524a7 git-gui--askyesno: allow overriding the window title
     @@ Commit message
          Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
      
       ## git-gui--askyesno ##
     +@@ git-gui--askyesno: exec wish "$0" -- "$@"
     + # This is an implementation of a simple yes no dialog
     + # which is injected into the git commandline by git gui
     + # in case a yesno question needs to be answered.
     ++#
     ++# The window title, which defaults to "Question?", can be
     ++# overridden via the optional `--title` command-line
     ++# option.
     + 
     + set NS {}
     + set use_ttk [package vsatisfies [package provide Tk] 8.5]
      @@ git-gui--askyesno: if {$use_ttk} {
       	set NS ttk
       }
     @@ git-gui--askyesno: if {$use_ttk} {
       	set prompt [join $argv " "]
       }
       
     -@@ git-gui--askyesno: proc yes {} {
     - 	exit 0
     - }
     +@@ git-gui--askyesno: pack .b -side bottom -fill x -ipadx 20 -ipady 15
     + bind . <Key-Return> {exit 0}
     + bind . <Key-Escape> {exit 1}
       
      -wm title . "Question?"
      +wm title . $title
 4:  6025b38d2659 ! 4:  4b04832c0b81 git-gui--askyesno (mingw): use Git for Windows' icon, if available
     @@ Metadata
       ## Commit message ##
          git-gui--askyesno (mingw): use Git for Windows' icon, if available
      
     -    For additional GUI goodness.
     +    This provides a unified look-and-feel in Git for Windows.
      
          Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
      
       ## git-gui--askyesno ##
     -@@ git-gui--askyesno: proc yes {} {
     - 	exit 0
     - }
     +@@ git-gui--askyesno: pack .b -side bottom -fill x -ipadx 20 -ipady 15
     + bind . <Key-Return> {exit 0}
     + bind . <Key-Escape> {exit 1}
       
      +if {$::tcl_platform(platform) eq {windows}} {
      +	set icopath [file dirname [file normalize $argv0]]
-- 
gitgitgadget
Previous: Pratyush YadavNext: Heiko Voigt via GitGitGadget
Message 10 of 19 in “git-gui: GIT_ASK_YESNO/GIT_ASKPASS patches from Git for Windows”
  1. 0/4 git-gui: GIT_ASK_YESNO/GIT_ASKPASS patches from Git for WindowsJohannes Schindelin via GitGitGadget, Sep 26, 2019
  2. 1/4 git-gui: provide question helper for retry fallback on WindowsHeiko Voigt via GitGitGadget, Sep 26, 2019
  3. Pratyush YadavSep 29, 2019
  4. 2/4 git gui: set GIT_ASKPASS=git-gui--askpass if not set yetJohannes Schindelin via GitGitGadget, Sep 26, 2019
  5. Pratyush YadavSep 29, 2019
  6. 3/4 git-gui--askyesno: allow overriding the window titleJohannes Schindelin via GitGitGadget, Sep 26, 2019
  7. Pratyush YadavSep 29, 2019
  8. 4/4 git-gui--askyesno (mingw): use Git for Windows' icon, if availableJohannes Schindelin via GitGitGadget, Sep 26, 2019
  9. Pratyush YadavSep 29, 2019
  10. 0/4 git-gui: GIT_ASK_YESNO/GIT_ASKPASS patches from Git for WindowsJohannes Schindelin via GitGitGadget, Aug 28, 2025
  11. 1/4 git-gui: provide question helper for retry fallback on WindowsHeiko Voigt via GitGitGadget, Aug 28, 2025
  12. 2/4 git gui: set GIT_ASKPASS=git-gui--askpass if not set yetJohannes Schindelin via GitGitGadget, Aug 28, 2025
  13. Johannes SixtAug 28, 2025
  14. Johannes SchindelinNov 17, 2025
  15. 3/4 git-gui--askyesno: allow overriding the window titleJohannes Schindelin via GitGitGadget, Aug 28, 2025
  16. 4/4 git-gui--askyesno (mingw): use Git for Windows' icon, if availableJohannes Schindelin via GitGitGadget, Aug 28, 2025
  17. git-gui: use tk_messageBox for ask yes/noMark Levedahl, Aug 28, 2025
  18. Johannes SchindelinAug 28, 2025
  19. Johannes SixtAug 28, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.