From: Johannes Sixt Date: Thu, 31 Jul 2025 17:47:43 GMT Subject: Re: [PATCH v2 5/5] git-gui: ensure own version of git-gui--askpass is used Message-ID: In-Reply-To: <20250731080628.27917-6-carenas@gmail.com> Am 31.07.25 um 10:06 schrieb Carlo Marcelo Arenas Belón: > When finding a location for the askpass helper, git will be asked > for its exec path, but if that git is not the same that called > git-gui then we might mistakenly point to its helper instead. > > Assume that git-gui and the helper are colocated to derive its > path instead. > > This is specially useful in macOS where a broken version of that > helper is provided by the system git. > > Suggested-by: Mark Levedahl > Signed-off-by: Carlo Marcelo Arenas Belón > --- > git-gui.sh | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/git-gui.sh b/git-gui.sh > index 8bb121d..78324db 100755 > --- a/git-gui.sh > +++ b/git-gui.sh > @@ -1114,7 +1114,9 @@ citool { > > # Suggest our implementation of askpass, if none is set > if {![info exists env(SSH_ASKPASS)]} { > - set env(SSH_ASKPASS) [file join [git --exec-path] git-gui--askpass] > + set env(SSH_ASKPASS) \ > + [file join [file dirname [file normalize $::argv0]] \ > + git-gui--askpass] > } > > ###################################################################### FYI, in my integration branch, this area looks like so without this change: # Suggest our implementation of askpass, if none is set if {![info exists env(SSH_ASKPASS)]} { set env(SSH_ASKPASS) [file join [git --exec-path] git-gui--askpass] } if {![info exists env(GIT_ASKPASS)]} { set env(GIT_ASKPASS) [file join [git --exec-path] git-gui--askpass] } if {![info exists env(GIT_ASK_YESNO)]} { set env(GIT_ASK_YESNO) [file join [git --exec-path] git-gui--askyesno] } To help these other cases, I'll squash the following into this commit: diff --git a/git-gui.sh b/git-gui.sh index 78324db2b587..f28a23f844cf 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -1113,11 +1113,11 @@ citool { ## execution environment # Suggest our implementation of askpass, if none is set +set argv0dir [file dirname [file normalize $::argv0]] if {![info exists env(SSH_ASKPASS)]} { - set env(SSH_ASKPASS) \ - [file join [file dirname [file normalize $::argv0]] \ - git-gui--askpass] + set env(SSH_ASKPASS) [file join $argv0dir git-gui--askpass] } +unset argv0dir ###################################################################### ##