[PATCH] git-sh-setup: Fail if the git directory was not found.

DORMANTno replies

3 messages, 3 authors, 2016-06-15 · open the first message on its own page

[PATCH] git-sh-setup: Fail if the git directory was not found.

From: Robert Shearman <hidden>
Date: 2016-06-15 22:42:36

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>
---
  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.

Re: [PATCH] git-sh-setup: Fail if the git directory was not found.

From: Alex Riesen <hidden>
Date: 2016-06-15 22:42:36

Robert Shearman, Fri, Aug 11, 2006 11:23:30 +0200:
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.
BTW, did anyone notice that "--usage" almost always needs git
directory? That is quite unusual.

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
 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"
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help