Re: [PATCH] git-sh-setup: Fail if the git directory was not found.
- From
Junio C Hamano <junkio@cox.net>
- Date
- Aug 11, 2006, 22:39 UTC
- Message-ID
- <7vfyg2sxrk.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <44DC4C92.5060009@codeweavers.com>
Robert Shearman <rob@codeweavers.com> writes:
Show 15 quoted lines
> 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 <rob@codeweavers.com>
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.
Show 28 quoted lines
> 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"