From 4d03f95501ba527a85f6a1a7d916e8c66ee06f41 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Fri, 14 Jul 2017 14:18:31 -0400 Subject: check-ref-format: require a repository for --branch When the user asks "--branch" to interpret a branch name like "@{-1}", we have to dig the answer out of the HEAD reflog. We can obviously only do that if we have a repository, and indeed, running it outside a repository causes us to hit a BUG(). We basically have two options: 1. We can define "@{-N}" outside of a repository as "no such branch" and die with "not a valid brach name". 2. We can just declare that "--branch" must be run inside a repository, in which case we die with "not a git repository". The effect is more or less the same for "@{-N}". Technically one can use "--branch" outside of a repository as long as you don't use any names that actually need interpreting. But since intrpreting is the option's documented purpose, there doesn't seem any point in trying to resolve vanilla names like "foo" (which we end up just printing to stdout verbatim). So let's go with option 2. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- builtin/check-ref-format.c | 3 +-- t/t1402-check-ref-format.sh | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/builtin/check-ref-format.c b/builtin/check-ref-format.c index eac499450f..1e5f9835f0 100644 --- a/builtin/check-ref-format.c +++ b/builtin/check-ref-format.c @@ -39,9 +39,8 @@ static char *collapse_slashes(const char *refname) static int check_ref_format_branch(const char *arg) { struct strbuf sb = STRBUF_INIT; - int nongit; - setup_git_directory_gently(&nongit); + setup_git_directory(); if (strbuf_check_branch_ref(&sb, arg)) die("'%s' is not a valid branch name", arg); printf("%s\n", sb.buf + 11); diff --git a/t/t1402-check-ref-format.sh b/t/t1402-check-ref-format.sh index 0790edf60d..1674b061e2 100755 --- a/t/t1402-check-ref-format.sh +++ b/t/t1402-check-ref-format.sh @@ -161,6 +161,10 @@ test_expect_success 'check-ref-format --branch from subdir' ' test "$refname" = "$sha1" ' +test_expect_success 'check-ref-format --branch from non-repo' ' + test_must_fail nongit git check-ref-format --branch @{-1} +' + valid_ref_normalized() { prereq= case $1 in -- cgit v1.2.1