From: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
To: git@vger.kernel.org
Cc: "Shawn O. Pearce" <spearce@spearce.org>,
Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Subject: [PATCH] git-gui: set GIT_DIR and GIT_WORK_TREE after setup
Date: Sun, 24 Jan 2010 00:59:00 +0100 [thread overview]
Message-ID: <1264291140-16595-1-git-send-email-giuseppe.bilotta@gmail.com> (raw)
In-Reply-To: <20100123232215.GI12679@spearce.org>
Rather than juggling with the env var GIT_DIR around the invocation of
gitk, set it and GIT_WORK_TREE after finishing setup, ensuring that any
external tool works with the setup we're running with.
This also allows us to remove a couple of conditionals when running gitk
or git gui in a submodule, as we know that the variables are present and
have to be unset and reset before and after the invocation.
Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
---
git-gui.sh | 43 ++++++++++++++++++++-----------------------
1 files changed, 20 insertions(+), 23 deletions(-)
diff --git a/git-gui.sh b/git-gui.sh
index 5d39955..81143c7 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -1171,6 +1171,9 @@ if {[lindex $_reponame end] eq {.git}} {
set _reponame [lindex $_reponame end]
}
+set env(GIT_DIR) $_gitdir
+set env(GIT_WORK_TREE) $_gitworktree
+
######################################################################
##
## global init
@@ -1979,7 +1982,7 @@ set starting_gitk_msg [mc "Starting gitk... please wait..."]
proc do_gitk {revs {is_submodule false}} {
global current_diff_path file_states current_diff_side ui_index
- global _gitworktree
+ global _gitdir _gitworktree
# -- Always start gitk through whatever we were loaded with. This
# lets us bypass using shell process on Windows systems.
@@ -1991,19 +1994,12 @@ proc do_gitk {revs {is_submodule false}} {
} else {
global env
- if {[info exists env(GIT_DIR)]} {
- set old_GIT_DIR $env(GIT_DIR)
- } else {
- set old_GIT_DIR {}
- }
-
set pwd [pwd]
if {!$is_submodule} {
if {![is_bare]} {
cd $_gitworktree
}
- set env(GIT_DIR) [file normalize [gitdir]]
} else {
cd $current_diff_path
if {$revs eq {--}} {
@@ -2024,15 +2020,18 @@ proc do_gitk {revs {is_submodule false}} {
}
set revs $old_sha1...$new_sha1
}
- if {[info exists env(GIT_DIR)]} {
- unset env(GIT_DIR)
- }
+ # GIT_DIR and GIT_WORK_TREE for the submodule are not the ones
+ # we've been using for the main repository, so unset them.
+ # TODO we could make life easier (start up faster?) for gitk
+ # by setting these to the appropriate values to allow gitk
+ # to skip the heuristics to find their proper value
+ unset env(GIT_DIR)
+ unset env(GIT_WORK_TREE)
}
eval exec $cmd $revs "--" "--" &
- if {$old_GIT_DIR ne {}} {
- set env(GIT_DIR) $old_GIT_DIR
- }
+ set env(GIT_DIR) $_gitdir
+ set env(GIT_WORK_TREE) $_gitworktree
cd $pwd
ui_status $::starting_gitk_msg
@@ -2053,22 +2052,20 @@ proc do_git_gui {} {
error_popup [mc "Couldn't find git gui in PATH"]
} else {
global env
+ global _gitdir _gitworktree
- if {[info exists env(GIT_DIR)]} {
- set old_GIT_DIR $env(GIT_DIR)
- unset env(GIT_DIR)
- } else {
- set old_GIT_DIR {}
- }
+ # see note in do_gitk about unsetting these vars when
+ # running tools in a submodule
+ unset env(GIT_DIR)
+ unset env(GIT_WORK_TREE)
set pwd [pwd]
cd $current_diff_path
eval exec $exe gui &
- if {$old_GIT_DIR ne {}} {
- set env(GIT_DIR) $old_GIT_DIR
- }
+ set env(GIT_DIR) $_gitdir
+ set env(GIT_WORK_TREE) $_gitworktree
cd $pwd
ui_status $::starting_gitk_msg
--
1.6.6.rc1.295.g3a4e71
next prev parent reply other threads:[~2010-01-23 23:59 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-23 10:03 [PATCHv4 0/5] git-gui: more robust handling of fancy repos Giuseppe Bilotta
2010-01-23 10:03 ` [PATCHv4 1/5] git-gui: handle non-standard worktree locations Giuseppe Bilotta
2010-01-23 10:03 ` [PATCHv4 2/5] git-gui: handle bare repos correctly Giuseppe Bilotta
2010-01-23 10:03 ` [PATCHv4 3/5] git-gui: work from the .git dir Giuseppe Bilotta
2010-01-23 10:03 ` [PATCHv4 4/5] git-gui: set GIT_DIR and GIT_WORK_TREE after setup Giuseppe Bilotta
2010-01-23 23:22 ` Shawn O. Pearce
2010-01-23 23:59 ` Giuseppe Bilotta [this message]
2010-01-24 0:03 ` [PATCH] " Shawn O. Pearce
2010-01-23 10:03 ` [PATCHv4 5/5] git-gui: update shortcut tools to use _gitworktree Giuseppe Bilotta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1264291140-16595-1-git-send-email-giuseppe.bilotta@gmail.com \
--to=giuseppe.bilotta@gmail.com \
--cc=git@vger.kernel.org \
--cc=spearce@spearce.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).