git-gui: work from the .git dir

When git-gui is run from a .git dir, _gitdir would be set to "." by
rev-parse, something that confuses the worktree detection.

Fix by expanding the value of _gitdir to pwd in this special case.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Giuseppe Bilotta 2010-01-23 11:03:36 +01:00 committed by Shawn O. Pearce
parent 390425bdef
commit 87cd09f43e
1 changed files with 10 additions and 0 deletions

View File

@ -1074,6 +1074,8 @@ if {[catch {
set _prefix {} set _prefix {}
}] }]
&& [catch { && [catch {
# beware that from the .git dir this sets _gitdir to .
# and _prefix to the empty string
set _gitdir [git rev-parse --git-dir] set _gitdir [git rev-parse --git-dir]
set _prefix [git rev-parse --show-prefix] set _prefix [git rev-parse --show-prefix]
} err]} { } err]} {
@ -1082,6 +1084,14 @@ if {[catch {
choose_repository::pick choose_repository::pick
set picked 1 set picked 1
} }

# we expand the _gitdir when it's just a single dot (i.e. when we're being
# run from the .git dir itself) lest the routines to find the worktree
# get confused
if {$_gitdir eq "."} {
set _gitdir [pwd]
}

if {![file isdirectory $_gitdir] && [is_Cygwin]} { if {![file isdirectory $_gitdir] && [is_Cygwin]} {
catch {set _gitdir [exec cygpath --windows $_gitdir]} catch {set _gitdir [exec cygpath --windows $_gitdir]}
} }