Subject: Re: [PATCH v1] alias: support UTF-8 characters via subsection syntax

From: Junio C Hamano <[email-masked]>
Date: Tue, 10 Feb 2026 08:35:06 -0800

Jonatan Holmgren <[email-masked]> writes:

> diff --git a/Documentation/RelNotes/2.54.0.adoc b/Documentation/RelNotes/2.54.0.adoc
> index 20c660d82a..8cb00a21bb 100644
> --- a/Documentation/RelNotes/2.54.0.adoc
> +++ b/Documentation/RelNotes/2.54.0.adoc
> @@ -7,6 +7,14 @@ UI, Workflows & Features
>   * "git add -p" and friends note what the current status of the hunk
>     being shown is.
>  
> + * Git aliases now support UTF-8 characters in alias names through
> +   subsection syntax: `[alias "name"] command = value`. This enables
> +   aliases in non-English languages. The flat syntax continues
> +   to work for backward compatibility.
> +
> + * The new subsection syntax uses case-sensitive matching and
> +   the flat syntax remains case-insensitive for backward compatibility.

Thanks for summrizing the topic well.  "The flat syntax" is a new
phrase to us, I think.  Do we have a term to call two-level
configuration variables in contrast to threee-level ones defined in
the glossary?  I've seen phrases like two- and three- level names to
distinguish them in the past, but that is no way "official".

"git config --help" has Syntax section that calls "alias" a
"section", and "foo" a "subsection", and "command" a "variable name"
in "alias.foo.command".  Perhaps "the alias definition without
subsection, e.g., "[alias] co = checkout", continues to work", or
something, perhaps?

In addition to what Peff already mentioned, we would not want the
second bullet point; the fact that the traditional two-level config
is still supported is very much worth mentioning, which is already
done in the previous point.  So all it remains in this bullet point
is that this topic did not change anything in the three-level
configuration case, which is not noteworty.

> +# Simple syntax (ASCII names)
> +[alias]
> +    co = checkout
> +    st = status

It is somewhat misleading to call this "ASCII" as it is stricter
than that (e.g., there are '.' and other ASCII characters that you
cannot have in the name).  

    "Limited to alphanumeric and '-' letters (the same limitation as
    configuration variable names), case insensitive"

or something.