* git config oddity
@ 2008-07-15 14:44 Sverre Rabbelier
2008-07-15 15:02 ` Johannes Schindelin
0 siblings, 1 reply; 5+ messages in thread
From: Sverre Rabbelier @ 2008-07-15 14:44 UTC (permalink / raw)
To: Git Mailinglist
Heya,
I noticed today that when unsetting the last value in a group git
config leaves the empty group header. I was somewhat surprised here,
but I am guessing it has a purpose? Anyway, I also noticed (and this
threw my manual config parser off) that when later on an option is set
to that empty group, a new group is created with the same name. Is
this something I have to deal with in my parser (e.g., should I keep
scanning the file for occurrences of my header and allow for empty
groups, or is this a bug in git config? Either is fine with me, was
just wondering :).
-----------------
sverre@Laptop-Sverre:~/code$ mkdir config-oddity
sverre@Laptop-Sverre:~/code$ cd config-oddity/
sverre@Laptop-Sverre:~/code/config-oddity$ git init
Initialized empty Git repository in /home/sverre/code/config-oddity/.git/
sverre@Laptop-Sverre:~/code/config-oddity$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
sverre@Laptop-Sverre:~/code/config-oddity$ git config foo.bar spam
sverre@Laptop-Sverre:~/code/config-oddity$ cat .git/config # as expected
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[foo]
bar = spam
sverre@Laptop-Sverre:~/code/config-oddity$ git config --unset foo.bar
sverre@Laptop-Sverre:~/code/config-oddity$ cat .git/config # dubious,
but acceptable
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[foo]
sverre@Laptop-Sverre:~/code/config-oddity$ git config foo.bar eggs
sverre@Laptop-Sverre:~/code/config-oddity$ cat .git/config # errr? two
[foo] headers?
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[foo]
[foo]
bar = eggs
sverre@Laptop-Sverre:~/code/config-oddity$
-----------------
--
Cheers,
Sverre Rabbelier
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: git config oddity
2008-07-15 14:44 git config oddity Sverre Rabbelier
@ 2008-07-15 15:02 ` Johannes Schindelin
2008-07-15 15:29 ` Sverre Rabbelier
0 siblings, 1 reply; 5+ messages in thread
From: Johannes Schindelin @ 2008-07-15 15:02 UTC (permalink / raw)
To: sverre; +Cc: Git Mailinglist
Hi,
On Tue, 15 Jul 2008, Sverre Rabbelier wrote:
> I noticed today that when unsetting the last value in a group git
> config leaves the empty group header.
That is on purpose. As .git/config was always meant as a user-editable
file, you can put comments into that section. Or comment out some values.
So "git config" does not remove the section, even if no variable is there
at the moment.
It is somewhat unfortunate that setting a variable does not find the
section; the reason is that it sees sections only when a variable is set
(to avoid having to do the parsing itself).
Hth,
Dscho
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: git config oddity
2008-07-15 15:02 ` Johannes Schindelin
@ 2008-07-15 15:29 ` Sverre Rabbelier
2008-07-15 15:33 ` Johannes Schindelin
0 siblings, 1 reply; 5+ messages in thread
From: Sverre Rabbelier @ 2008-07-15 15:29 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Git Mailinglist
On Tue, Jul 15, 2008 at 5:02 PM, Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
>> I noticed today that when unsetting the last value in a group git
>> config leaves the empty group header.
>
> That is on purpose. As .git/config was always meant as a user-editable
> file, you can put comments into that section. Or comment out some values.
Ok, this makes sense :). I agree that I would be unhappily surprised
if I found that git removed a section that I had put some comments in
when I unset a variable.
> It is somewhat unfortunate that setting a variable does not find the
> section; the reason is that it sees sections only when a variable is set
> (to avoid having to do the parsing itself).
Ah, unfortunate indeed. I'm not sure I understand why it does not see
the existing header? I had a look at config.c but I couldn't really
make out why it doesn't. Would it be difficult to add that?
--
Cheers,
Sverre Rabbelier
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: git config oddity
2008-07-15 15:29 ` Sverre Rabbelier
@ 2008-07-15 15:33 ` Johannes Schindelin
2008-07-15 15:35 ` Sverre Rabbelier
0 siblings, 1 reply; 5+ messages in thread
From: Johannes Schindelin @ 2008-07-15 15:33 UTC (permalink / raw)
To: sverre; +Cc: Git Mailinglist
Hi,
On Tue, 15 Jul 2008, Sverre Rabbelier wrote:
> On Tue, Jul 15, 2008 at 5:02 PM, Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
>
> > It is somewhat unfortunate that setting a variable does not find the
> > section; the reason is that it sees sections only when a variable is
> > set (to avoid having to do the parsing itself).
>
> Ah, unfortunate indeed. I'm not sure I understand why it does not see
> the existing header? I had a look at config.c but I couldn't really make
> out why it doesn't.
The config writing uses the config parser to determine where the locations
of the config variables (and therefore, sections) are by using the parser,
and remembering the position in the file.
> Would it be difficult to add that?
Yes.
Ciao,
Dscho
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-07-15 15:36 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-15 14:44 git config oddity Sverre Rabbelier
2008-07-15 15:02 ` Johannes Schindelin
2008-07-15 15:29 ` Sverre Rabbelier
2008-07-15 15:33 ` Johannes Schindelin
2008-07-15 15:35 ` Sverre Rabbelier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox