Subject: Re: [RFC] Git config file reader in Perl (WIP)

From: Jakub Narebski <[email-masked]>
Date: Wed, 17 Jan 2007 10:48:02 +0100

Johannes Schindelin wrote:
> 
> On Wed, 17 Jan 2007, Jakub Narebski wrote:
> 
>> Dnia wtorek 16. stycznia 2007 23:56, Johannes Schindelin napisa?:

>>> So, how about a "git repo-config --dump" which outputs a stream of NUL 
>>> separated keys and values? This should be really easy to "parse", and 
>>> there are no ambiguities: No key or value can contain a NUL.
>> 
>> Good idea, although "\n" would work as well as NUL.
> 
> No it would not:
> 
> 	[someSection]
> 		thisKey = has\na\nvalue\with\nseveral\nnewlines

$ fatal: bad config file line <nn> in <config>

The same with quoted:

 	[someSection]
 		qthisKey = "has\na\nvalue\with\nseveral\nnewlines"

There is no escaping besides escaping " and escape character
i.e. escaping \ in git config. Se "\n" would work as well as NUL.
(It is said explicitely that subsection names cannot contain "\n").

>> The only problem is with "key without value" case, i.e. something like
>> 
>>   [section]
>>   	noval
>> 
>> which shows as
>> 
>>   section.noval
> 
> but is equivalent to
> 
> 	[section]
> 		noval = true
> 
> Since it is by definition a boolean value.

But only for "git repo-config --bool --get section.noval" output.
Semantically equivalent to "true".

But without --bool it returns like it was "".

>> in "git repo-config -l" output (note missing '=' !), and I guess differs
>> for some case from
>> 
>>   [section]
>>   	noval = 
> 
> Yes, this is not a boolean. The difference is that the callback function 
> is called with NULL in the former case, and with "" in the latter.

-- 
Jakub Narebski
Poland