зеркало из https://github.com/microsoft/git.git
for-each-ref: utilize core.warnAmbiguousRefs for :short-format
core.warnAmbiguousRefs is used to select strict mode for the abbreviation for the ":short" format specifier of "refname" and "upstream". In strict mode, the abbreviated ref will never trigger the 'warn_ambiguous_refs' warning. I.e. for these refs: refs/heads/xyzzy refs/tags/xyzzy the abbreviated forms are: heads/xyzzy tags/xyzzy Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
6e7b3309d3
Коммит
2bb98169be
|
@ -75,6 +75,8 @@ For all objects, the following names can be used:
|
||||||
refname::
|
refname::
|
||||||
The name of the ref (the part after $GIT_DIR/).
|
The name of the ref (the part after $GIT_DIR/).
|
||||||
For a non-ambiguous short name of the ref append `:short`.
|
For a non-ambiguous short name of the ref append `:short`.
|
||||||
|
The option core.warnAmbiguousRefs is used to select the strict
|
||||||
|
abbreviation mode.
|
||||||
|
|
||||||
objecttype::
|
objecttype::
|
||||||
The type of the object (`blob`, `tree`, `commit`, `tag`).
|
The type of the object (`blob`, `tree`, `commit`, `tag`).
|
||||||
|
|
|
@ -601,7 +601,8 @@ static void populate_value(struct refinfo *ref)
|
||||||
if (formatp) {
|
if (formatp) {
|
||||||
formatp++;
|
formatp++;
|
||||||
if (!strcmp(formatp, "short"))
|
if (!strcmp(formatp, "short"))
|
||||||
refname = shorten_unambiguous_ref(refname, 0);
|
refname = shorten_unambiguous_ref(refname,
|
||||||
|
warn_ambiguous_refs);
|
||||||
else
|
else
|
||||||
die("unknown %.*s format %s",
|
die("unknown %.*s format %s",
|
||||||
(int)(formatp - name), name, formatp);
|
(int)(formatp - name), name, formatp);
|
||||||
|
@ -917,6 +918,9 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
|
||||||
sort = default_sort();
|
sort = default_sort();
|
||||||
sort_atom_limit = used_atom_cnt;
|
sort_atom_limit = used_atom_cnt;
|
||||||
|
|
||||||
|
/* for warn_ambiguous_refs */
|
||||||
|
git_config(git_default_config, NULL);
|
||||||
|
|
||||||
memset(&cbdata, 0, sizeof(cbdata));
|
memset(&cbdata, 0, sizeof(cbdata));
|
||||||
cbdata.grab_pattern = argv;
|
cbdata.grab_pattern = argv;
|
||||||
for_each_ref(grab_single_ref, &cbdata);
|
for_each_ref(grab_single_ref, &cbdata);
|
||||||
|
|
|
@ -301,10 +301,11 @@ test_expect_success 'Check for invalid refname format' '
|
||||||
|
|
||||||
cat >expected <<\EOF
|
cat >expected <<\EOF
|
||||||
heads/master
|
heads/master
|
||||||
master
|
tags/master
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success 'Check ambiguous head and tag refs' '
|
test_expect_success 'Check ambiguous head and tag refs (strict)' '
|
||||||
|
git config --bool core.warnambiguousrefs true &&
|
||||||
git checkout -b newtag &&
|
git checkout -b newtag &&
|
||||||
echo "Using $datestamp" > one &&
|
echo "Using $datestamp" > one &&
|
||||||
git add one &&
|
git add one &&
|
||||||
|
@ -315,12 +316,23 @@ test_expect_success 'Check ambiguous head and tag refs' '
|
||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
cat >expected <<\EOF
|
||||||
|
heads/master
|
||||||
|
master
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'Check ambiguous head and tag refs (loose)' '
|
||||||
|
git config --bool core.warnambiguousrefs false &&
|
||||||
|
git for-each-ref --format "%(refname:short)" refs/heads/master refs/tags/master >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
cat >expected <<\EOF
|
cat >expected <<\EOF
|
||||||
heads/ambiguous
|
heads/ambiguous
|
||||||
ambiguous
|
ambiguous
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success 'Check ambiguous head and tag refs II' '
|
test_expect_success 'Check ambiguous head and tag refs II (loose)' '
|
||||||
git checkout master &&
|
git checkout master &&
|
||||||
git tag ambiguous testtag^0 &&
|
git tag ambiguous testtag^0 &&
|
||||||
git branch ambiguous testtag^0 &&
|
git branch ambiguous testtag^0 &&
|
||||||
|
|
Загрузка…
Ссылка в новой задаче