Re: [PATCH] git-sh-setup: Fail if the git directory was not found.
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:36
Robert Shearman [off-list ref] writes:
Always use git-rev-parse to find a valid git directory, as git-repo-config no longer returns an error code if a git directory wasn't found. This fixes the message received when invoking certain commands implemented as shell scripts from outside of a git tree, so e.g. instead of receiving this: /home/rob/bin/git-fetch: line 89: /FETCH_HEAD: Permission denied We get this again: fatal: Not a git repository: '.git' Also, move the setting of GIT_OBJECT_DIRECTORY to outside of the non-subdir-ok case as it isn't specific to that case. Signed-off-by: Robert Shearman <redacted>
Moving the assignment of GIT_OBJECT_DIRECTORY is fine, but changing it to an unconditional assignment is wrong. The user can have a GIT_OBJECT_DIRECTORY set independently from GIT_DIR (or ../some/where/.git that is detected). The rest looks sane; the new test should still detect the case the original test tried to catch.
quoted hunk ↗ jump to hunk
git-sh-setup.sh | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-) Hopefully this patch addresses the concerns of Junio and others by continuing to allow git-ls-remotes to work outside of a git repository.diff --git a/git-sh-setup.sh b/git-sh-setup.sh index d15747f..49f9e3b 100755 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh@@ -37,15 +37,9 @@ esac if [ -z "$SUBDIRECTORY_OK" ] then - : ${GIT_DIR=.git} - : ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"} - - # Make sure we are in a valid repository of a vintage we understand. - GIT_DIR="$GIT_DIR" git repo-config --get core.nosuch >/dev/null - if test $? = 128 - then - exit - fi + GIT_DIR=$(GIT_DIR=.git git-rev-parse --git-dir) || exit else GIT_DIR=$(git-rev-parse --git-dir) || exit fi + +GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"