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>
This commit is contained in:
parent
cfbe22f03f
commit
49cc460d88
@ -36,7 +36,9 @@ static void collapse_slashes(char *dst, const char *src)
|
|||||||
static int check_ref_format_branch(const char *arg)
|
static int check_ref_format_branch(const char *arg)
|
||||||
{
|
{
|
||||||
struct strbuf sb = STRBUF_INIT;
|
struct strbuf sb = STRBUF_INIT;
|
||||||
|
int nongit;
|
||||||
|
|
||||||
|
setup_git_directory_gently(&nongit);
|
||||||
if (strbuf_check_branch_ref(&sb, arg))
|
if (strbuf_check_branch_ref(&sb, arg))
|
||||||
die("'%s' is not a valid branch name", arg);
|
die("'%s' is not a valid branch name", arg);
|
||||||
printf("%s\n", sb.buf + 11);
|
printf("%s\n", sb.buf + 11);
|
||||||
|
@ -41,6 +41,23 @@ test_expect_success "check-ref-format --branch @{-1}" '
|
|||||||
refname2=$(git check-ref-format --branch @{-2}) &&
|
refname2=$(git check-ref-format --branch @{-2}) &&
|
||||||
test "$refname2" = master'
|
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() {
|
valid_ref_normalized() {
|
||||||
test_expect_success "ref name '$1' simplifies to '$2'" "
|
test_expect_success "ref name '$1' simplifies to '$2'" "
|
||||||
refname=\$(git check-ref-format --print '$1') &&
|
refname=\$(git check-ref-format --print '$1') &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user