# git config key bug or by design?

4 messages from 2012-11-28 to 2012-11-28. Participants: Peter van der Does, Jeff King.
Thread: https://gitlist.dev/t/32222

## Peter van der Does, 2012-11-28 03:14

Subject: git config key bug or by design?
Message-ID: <20121127221446.7f2fbf71@Indy>
URL: https://gitlist.dev/e/20121127221446.7f2fbf71%40Indy

```
I noticed today I can't create a key starting with a number.

The source code[1] confirms this, but is this a bug or is it by design?


[1]: https://github.com/git/git/blob/master/config.c#L1265

-- 
Peter van der Does

GPG key: CB317D6E

IRC: Ganseki on irc.freenode.net
Twitter: @petervanderdoes

```

## Jeff King, 2012-11-28 03:34

Subject: Re: git config key bug or by design?
Message-ID: <20121128033408.GE27772@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20121128033408.GE27772%40sigill.intra.peff.net
In-Reply-To: <20121127221446.7f2fbf71@Indy>

```
On Tue, Nov 27, 2012 at 10:14:46PM -0500, Peter van der Does wrote:

> I noticed today I can't create a key starting with a number.
> 
> The source code[1] confirms this, but is this a bug or is it by design?

I don't recall ever discussing it. But what is it that you want to store
in a key starting with a number? Git does not respect any such config
values[1].

Are you writing a new tool that will store its config alongside git's?
Even if the behavior is loosened, you would probably want to avoid
starting your config keys with numbers, as older git versions would be
around for a while and would choke on it.

-Peff

[1] You can still store arbitrary bytes in the subsection name (e.g.,
    "foo.123.bar").

```

## Peter van der Does, 2012-11-28 12:11

Subject: Re: git config key bug or by design?
Message-ID: <20121128071147.188a869e@Indy>
URL: https://gitlist.dev/e/20121128071147.188a869e%40Indy
In-Reply-To: <20121128033408.GE27772@sigill.intra.peff.net>

```
On Tue, 27 Nov 2012 22:34:09 -0500
Jeff King <peff@peff.net> wrote:
> 
> I don't recall ever discussing it. But what is it that you want to
> store in a key starting with a number? Git does not respect any such
> config values[1].
> 
> Are you writing a new tool that will store its config alongside git's?
> Even if the behavior is loosened, you would probably want to avoid
> starting your config keys with numbers, as older git versions would be
> around for a while and would choke on it.
> 
> -Peff
> 
> [1] You can still store arbitrary bytes in the subsection name (e.g.,
>     "foo.123.bar").

I am writing a tool, it needs to store branch names in a separate config
file. 

It's clear git doesn't respect those values, hence my question. I
understand how to work around the problem, I would just prefix the key.
I was just wondering if it was by design, which I guess it is as the
parsing of the file will die if the key starts with a non-alpha
character.


-- 
Peter van der Does

GPG key: CB317D6E

IRC: Ganseki on irc.freenode.net
Twitter: @petervanderdoes

```

## Jeff King, 2012-11-28 20:21

Subject: Re: git config key bug or by design?
Message-ID: <20121128202158.GB9249@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20121128202158.GB9249%40sigill.intra.peff.net
In-Reply-To: <20121128071147.188a869e@Indy>

```
On Wed, Nov 28, 2012 at 07:11:47AM -0500, Peter van der Does wrote:

> I am writing a tool, it needs to store branch names in a separate config
> file.
> 
> It's clear git doesn't respect those values, hence my question. I
> understand how to work around the problem, I would just prefix the key.
> I was just wondering if it was by design, which I guess it is as the
> parsing of the file will die if the key starts with a non-alpha
> character.

In that case, I would definitely say to use some prefix section like
"section.$branchname.key". That is how git stores per-branch information
(e.g., branch.master.merge), and it was always designed to let there be
arbitrary data in the "middle" section, whereas the section and key are
restricted and case-insensitive.

So no, I do not recall "cannot start with number" as a specific design
decision, but it is definitely a design decision that the section name
would not allow arbitrary content.

-Peff

```
