When git-config stores a key of the form alias..name, it records
it under an empty subsection ([alias ""]). The new subsection-aware
alias lookup would see a non-NULL but zero-length subsection and
fall into the subsection code path, where it required a "command"
key and thus silently ignored the entry.
Normalize an empty subsection to NULL before any further processing
so that entries stored this way continue to work as plain
case-insensitive aliases, matching the pre-subsection behaviour.
Users who relied on alias..name to create an alias literally named
".name" may want to migrate to subsection syntax, which looks less confusing:
[alias ".name"]
command = <value>
Add tests covering both the empty-subsection compatibility case and
the leading-dot alias via the new syntax.
Signed-off-by: Jonatan Holmgren <jonatan@jontes.page>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
* - [alias "name"]
* command = value (with subsection, case-sensitive)
*/
+ /* Treat [alias ""] (empty subsection) the same as plain [alias]. */
+ if (subsection && !subsection_len)
+ subsection = NULL;
+
if (subsection && strcmp(key, "command"))
return 0;
test_grep "förgrena" output
'
+test_expect_success 'empty subsection treated as no subsection' '
+ test_config "alias..something" "!echo foobar" &&
+ git something >actual &&
+ echo foobar >expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'alias with leading dot via subsection syntax' '
+ test_config alias.".something".command "!echo foobar" &&
+ git .something >actual &&
+ echo foobar >expect &&
+ test_cmp expect actual
+'
+
test_done