diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2010-08-05 22:39:22 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-08-06 10:01:45 -0700 |
commit | 49cc460d88f5bae79b45ce2db16674f36b6cf38a (patch) | |
tree | 5b347503edd9e9000e53565144e9f4617c28858f | |
parent | cfbe22f03f9be1f3bbbd33240dcb127099d4346e (diff) | |
download | git-49cc460d88f5bae79b45ce2db16674f36b6cf38a.tar.gz git-49cc460d88f5bae79b45ce2db16674f36b6cf38a.tar.xz |
Allow "check-ref-format --branch" from subdirectory
check-ref-format --branch requires access to the repository
to resolve refs like @{-1}.
Noticed by Nguyễn Thái Ngọc Duy.
Cc: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/check-ref-format.c | 2 | ||||
-rwxr-xr-x | t/t1402-check-ref-format.sh | 17 |
2 files changed, 19 insertions, 0 deletions
diff --git a/builtin/check-ref-format.c b/builtin/check-ref-format.c index 8707ee935..ae3f28115 100644 --- a/builtin/check-ref-format.c +++ b/builtin/check-ref-format.c @@ -36,7 +36,9 @@ static void collapse_slashes(char *dst, const char *src) static int check_ref_format_branch(const char *arg) { struct strbuf sb = STRBUF_INIT; + int nongit; + setup_git_directory_gently(&nongit); 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 eb45afb01..782e75d00 100755 --- a/t/t1402-check-ref-format.sh +++ b/t/t1402-check-ref-format.sh @@ -41,6 +41,23 @@ test_expect_success "check-ref-format --branch @{-1}" ' refname2=$(git check-ref-format --branch @{-2}) && test "$refname2" = master' +test_expect_success 'check-ref-format --branch from subdir' ' + mkdir subdir && + + T=$(git write-tree) && + sha1=$(echo A | git commit-tree $T) && + git update-ref refs/heads/master $sha1 && + git update-ref refs/remotes/origin/master $sha1 + git checkout master && + git checkout origin/master && + git checkout master && + refname=$( + cd subdir && + git check-ref-format --branch @{-1} + ) && + test "$refname" = "$sha1" +' + valid_ref_normalized() { test_expect_success "ref name '$1' simplifies to '$2'" " refname=\$(git check-ref-format --print '$1') && |