aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2010-02-25 00:34:16 +0100
committerJunio C Hamano <gitster@pobox.com>2010-02-24 16:24:25 -0800
commit7d750f0ea511dcc26c3c9de996a9b75444366ecc (patch)
treef3dafcf801484763a55cf1073791b8d8dbccbbb1
parent94c8ccaaba4ac8b0225f5adeae4ff29f01951bce (diff)
downloadgit-7d750f0ea511dcc26c3c9de996a9b75444366ecc.tar.gz
git-7d750f0ea511dcc26c3c9de996a9b75444366ecc.tar.xz
shell setup: clear_local_git_env() function
Introduce an auxiliary function to clear all repo-local environment variables. This should be invoked by any shell script that switches repository during execution, to ensure that the environment is clean and that things such as the git dir and worktree are set up correctly. Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-sh-setup.sh7
1 files changed, 7 insertions, 0 deletions
diff --git a/git-sh-setup.sh b/git-sh-setup.sh
index d56426dd3..cf864a627 100755
--- a/git-sh-setup.sh
+++ b/git-sh-setup.sh
@@ -159,6 +159,13 @@ get_author_ident_from_commit () {
LANG=C LC_ALL=C sed -ne "$pick_author_script"
}
+# Clear repo-local GIT_* environment variables. Useful when switching to
+# another repository (e.g. when entering a submodule). See also the env
+# list in git_connect()
+clear_local_git_env() {
+ unset $(git rev-parse --local-env-vars)
+}
+
# Make sure we are in a valid repository of a vintage we understand,
# if we require to be in a git repository.
if test -z "$NONGIT_OK"