All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: "Robert P. J. Day" <rpjday@crashcourse.ca>
Cc: Git Mailing list <git@vger.kernel.org>
Subject: Re: how exactly can git config section names contain periods?
Date: Fri, 1 Jun 2018 17:07:31 -0400	[thread overview]
Message-ID: <20180601210731.GA20974@sigill.intra.peff.net> (raw)
In-Reply-To: <alpine.LFD.2.21.1806011606490.11215@localhost.localdomain>

On Fri, Jun 01, 2018 at 04:14:12PM -0400, Robert P. J. Day wrote:

>   more oddities in my travels, this from Doc.../config.txt:
> 
> "The file consists of sections and variables.  A section begins with
> the name of the section in square brackets and continues until the
> next section begins.  Section names are case-insensitive.  Only
> alphanumeric characters, `-` and `.` are allowed in section names.
>                                   ^ ?????
> 
>   what? how can section names contain periods? reading further,

I agree that seems like nonsense. Once we get to the first period, we
consider parts after that to be a subsection name, due to the
"flattened" form we use in various places (i.e., "section.key" or
"section.subsection.key").

Syntactically we do allow:

  [foo.bar]
  key = true

in the config file, which should equivalent to:

  [foo "bar"]
  key = true

This is mentioned later:

  There is also a deprecated [section.subsection] syntax. With this
  syntax, the subsection name is converted to lower-case and is also
  compared case sensitively. These subsection names follow the same
  restrictions as section names.

This has been deprecated since 2011. Maybe it's time to finally get rid
of it.

> "Sections can be further divided into subsections.  To begin a
> subsection put its name in double quotes, separated by space from the
> section name, in the section header, like in the example below:
> 
> --------
>         [section "subsection"]
> 
> 
>   ok, so how on earth would i use "git config" at the command line to
> set a config variable with some arbitrary level of subsections? let's
> try this:

You don't. There are only three levels: section, (optional) subsection,
and key. If there is a subsection, it consists of _everything_ between
the two outer periods.

>   $ git config --global a.b.c.d.e rday
> 
> huh ... seemed to work fine, and added this to my ~/.gitconfig:
> 
>   [a "b.c.d"]
>           e = rday
> 
> as i see it, the first component is intgerpreted as the section name,
> the last component is the variable/key(?) name, and everything in
> between is treated as subsection(s), which is not at all obvious from
> that Doc file, or from "man git-config".

Yep, your understanding is correct.

>   and if a section name can contain periods, how would you specify
> that at the command line?

You can't, because section names cannot contain periods. ;)

I agree that the docs you quoted are somewhere between misleading and
outright wrong. At the very least, we should remove the part about ".
allowed in section names". But I also think we could stand to make the
3-level mental model more explicit.

-Peff

  parent reply	other threads:[~2018-06-01 21:07 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-01 20:14 how exactly can git config section names contain periods? Robert P. J. Day
2018-06-01 20:50 ` Randall S. Becker
2018-06-01 21:07 ` Jeff King [this message]
2018-06-01 21:55   ` Robert P. J. Day
2018-06-01 23:05   ` Junio C Hamano
2018-06-02  0:02     ` Jeff King
2018-06-02  8:50   ` Robert P. J. Day
2018-06-02  9:26     ` Jeff King
2018-06-03  9:53   ` Robert P. J. Day
2018-06-03 10:35     ` SZEDER Gábor
2018-06-03 10:35       ` Robert P. J. Day
2018-06-04 12:09         ` Jeff King
2018-06-03 10:44     ` Johannes Sixt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180601210731.GA20974@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=rpjday@crashcourse.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.