1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-04-28 09:45:09 +02:00

pretty: find pretty formats case-insensitively

User-defined pretty formats are stored in config, which is meant to use
case-insensitive matching for names as noted in config.txt's 'Syntax'
section:

    All the other lines [...] are recognized as setting variables, in
    the form 'name = value' [...]. The variable names are
    case-insensitive, [...].

When a user specifies one of their format aliases with an uppercase in
it, however, it is not found.

    $ git config pretty.testAlias %h
    $ git config --list | grep pretty
    pretty.testalias=%h
    $ git log --format=testAlias -1
    fatal: invalid --pretty format: testAlias
    $ git log --format=testalias -1
    3c2a3fdc38

This is true whether the name in the config file uses any uppercase
characters or not.

Use case-insensitive comparisons when identifying format aliases.

Co-authored-by: Jeff King <peff@peff.net>
Signed-off-by: Brian Lyles <brianmlyles@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Brian Lyles 2024-03-25 02:25:13 -05:00 committed by Junio C Hamano
parent 2cd134f2c5
commit f999d5188b
2 changed files with 9 additions and 1 deletions

View File

@ -140,7 +140,7 @@ static struct cmt_fmt_map *find_commit_format_recursive(const char *sought,
for (i = 0; i < commit_formats_len; i++) {
size_t match_len;
if (!starts_with(commit_formats[i].name, sought))
if (!istarts_with(commit_formats[i].name, sought))
continue;
match_len = strlen(commit_formats[i].name);

View File

@ -58,6 +58,14 @@ test_expect_success 'alias user-defined format' '
test_cmp expected actual
'
test_expect_success 'alias user-defined format is matched case-insensitively' '
git log --pretty="format:%h" >expected &&
test_config pretty.testone "format:%h" &&
test_config pretty.testtwo testOne &&
git log --pretty=testTwo >actual &&
test_cmp expected actual
'
test_expect_success 'alias user-defined tformat with %s (ISO8859-1 encoding)' '
test_config i18n.logOutputEncoding $test_encoding &&
git log --oneline >expected-s &&