Code

git-gui: work from the .git dir
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sat, 23 Jan 2010 10:03:36 +0000 (11:03 +0100)
committerShawn O. Pearce <spearce@spearce.org>
Sat, 23 Jan 2010 23:14:04 +0000 (15:14 -0800)
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>
git-gui.sh

index e3473a81a6b63bfb7b9cd1907ad384957235bbf4..1fb3cbfc78fe07e658aa299f46fd8f55dbab1378 100755 (executable)
@@ -1074,6 +1074,8 @@ if {[catch {
                set _prefix {}
                }]
        && [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 _prefix [git rev-parse --show-prefix]
        } err]} {
@@ -1082,6 +1084,14 @@ if {[catch {
        choose_repository::pick
        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]} {
        catch {set _gitdir [exec cygpath --windows $_gitdir]}
 }