Skip to content

Commit 4301330

Browse files
committed
Merge branch 'jk/for-each-ref-icase'
The "--ignore-case" option of "git for-each-ref" (and its friends) did not work correctly, which has been fixed. * jk/for-each-ref-icase: ref-filter: avoid backend filtering with --ignore-case for-each-ref: consistently pass WM_IGNORECASE flag t6300: add a test for --ignore-case
2 parents 3467e25 + e674eb2 commit 4301330

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

ref-filter.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1814,7 +1814,7 @@ static int match_name_as_path(const struct ref_filter *filter, const char *refna
18141814
refname[plen] == '/' ||
18151815
p[plen-1] == '/'))
18161816
return 1;
1817-
if (!wildmatch(p, refname, WM_PATHNAME))
1817+
if (!wildmatch(p, refname, flags))
18181818
return 1;
18191819
}
18201820
return 0;
@@ -1869,6 +1869,15 @@ static int for_each_fullref_in_pattern(struct ref_filter *filter,
18691869
return for_each_fullref_in("", cb, cb_data, broken);
18701870
}
18711871

1872+
if (filter->ignore_case) {
1873+
/*
1874+
* we can't handle case-insensitive comparisons,
1875+
* so just return everything and let the caller
1876+
* sort it out.
1877+
*/
1878+
return for_each_fullref_in("", cb, cb_data, broken);
1879+
}
1880+
18721881
if (!filter->name_patterns[0]) {
18731882
/* no patterns; we have to look at everything */
18741883
return for_each_fullref_in("", cb, cb_data, broken);

t/t6300-for-each-ref.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,4 +795,15 @@ test_expect_success ':remotename and :remoteref' '
795795
)
796796
'
797797

798+
test_expect_success 'for-each-ref --ignore-case ignores case' '
799+
>expect &&
800+
git for-each-ref --format="%(refname)" refs/heads/MASTER >actual &&
801+
test_cmp expect actual &&
802+
803+
echo refs/heads/master >expect &&
804+
git for-each-ref --format="%(refname)" --ignore-case \
805+
refs/heads/MASTER >actual &&
806+
test_cmp expect actual
807+
'
808+
798809
test_done

0 commit comments

Comments
 (0)