git-gui: handle non-standard worktree locations
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sat, 23 Jan 2010 10:03:34 +0000 (11:03 +0100)
committerShawn O. Pearce <spearce@spearce.org>
Sat, 23 Jan 2010 23:14:21 +0000 (15:14 -0800)
commit21985a11360fc845b73f8300a8739b7b073f0627
treeda252d457d1fb7dc95d44f552aaf6611fa3fc03b
parentff07c3b6210fbebf07ce2820b5a9a95f0583ad8d
git-gui: handle non-standard worktree locations

Don't rely on the git worktree being the updir of the gitdir, since it
might not be. Instead, define (and use) a new _gitworktree global
variable, setting it to $GIT_WORK_TREE if present, falling back to
core.worktree if defined, and finally to whatever we guess the correct
worktree is. Getting core.worktree requires the config from the alleged
git dir _gitdir to be loaded early.

Supporting non-standard worktree locations also breaks the git-gui
assumption (made when calling gitk) that the worktree was the dirname of
$_gitdir and that, by consequence, the git dir could be set to the tail
of $_gitdir once we changed to the worktree root directory. Therefore,
we need to export a GIT_DIR environment variable set to the full,
normalized path of $_gitdir instead. We also skip changing to the worktree
directory if it's empty (i.e. if we're working on a bare repository).

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh