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@xxxxxxxxx> --- git-sh-setup.sh | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 7a09566..d382879 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -172,6 +172,15 @@ 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) +clear_local_git_env() { + unset GIT_DIR GIT_WORKTREE GIT_OBJECT_DIRECTORY \ + GIT_INDEX_FILE GIT_GRAFT_FILE GIT_CONFIG \ + GIT_NO_REPLACE_OBJECTS + +} + # 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" -- 1.7.0.200.g5ba36.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html