All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Nikolai Weibull <now@bitwi.se>, Junio C Hamano <junkio@cox.net>,
	Eric Wong <normalperson@yhbt.net>,
	git@vger.kernel.org
Subject: Re: [RFC] Git config file reader in Perl (WIP)
Date: Fri, 19 Jan 2007 23:44:11 +0100	[thread overview]
Message-ID: <200701192344.11972.jnareb@gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.63.0701191420000.22628@wbgn013.biozentrum.uni-wuerzburg.de>

Johannes Schindelin wrote:
> 
> On Fri, 19 Jan 2007, Jakub Narebski wrote:
> 
>> From a bit of testing, as documentation of config file format is 
>> woefully incomplete, (yes, I know I should use the source) _some_ of C 
>> escape sequences aka. character escape codes (CEC) are parsed:
> 
> No, you should not just use the source. You should use the source _and_ 
> complete the documentation.

Something like the patch below? Untested! ("make doc" up to 
git-repo-config.txt compiles, though).

I'm not sure how to tell that you can have [section] if you have
[section "subsection"], but you don't need to. And I probably forgot
to add some information.

And I'm not sure if some behavior should not be changed, for example
allowing _any_ line to be continued with `\`, or that other character
escape sequences and perhaps also octal character sequences should be
allowed (either that or `\b` should not be parsed).

I can send proper patch if requested, but I'd rather above issues
were resolved first.

diff --git a/Documentation/config.txt b/Documentation/config.txt
index da7fde5..9544308 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -14,14 +14,53 @@ dot-separated segment and the section name is everything before the last
 dot. The variable names are case-insensitive and only alphanumeric
 characters are allowed. Some variables may appear multiple times.
 
+Syntax
+~~~~~~
+
 The syntax is fairly flexible and permissive; whitespaces are mostly
-ignored. The '#' and ';' characters begin comments to the end of line,
-blank lines are ignored, lines containing strings enclosed in square
-brackets start sections and all the other lines are recognized
-as setting variables, in the form 'name = value'. If there is no equal
-sign on the line, the entire line is taken as 'name' and the variable
-is recognized as boolean "true". String values may be entirely or partially
-enclosed in double quotes; some variables may require special value format.
+ignored.  The '#' and ';' characters begin comments to the end of line,
+blank lines are ignored.
+
+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 not case sensitive.  Each variable
+must belong to some section, which means that there must be section
+header before first setting of a variable.
+
+Sections can be further divided into subsections.  To begin a subsection
+put it name in double quotes, separated by space from the section name,
+in the section header, like in example below
+
+	[section "subsection"]
+
+Subsection names can contain whitespace and are case sensitive.  Variables
+may belong directly to a section, or to a given subsection.
+
+All the other lines are recognized as setting variables, in the form
+'name = value'. If there is no equal sign on the line, the entire line
+is taken as 'name' and the variable is recognized as boolean "true".
+Variable names are case insensitive.  There can be more than one value
+for a given variable; we say then that variable is multivalued.
+
+Leading and trailing whitespace in a variable value is discarded.
+Internal whitespace within a variable value is retained verbatim.
+
+String values may be entirely or partially enclosed in double quotes.
+You need to enclose variable value in double quotes if you want to
+preserve leading or trailing whitespace, or if variable value contains
+beginning of comment characters, it means if it contains `#` or `;`.
+Double quote `"` and backslash `\` characters in variable value must
+be escaped: use `\"` for `"`, and `\\` for `\`.
+
+The following escape sequences (beside `\"` and `\\`) are recognized:
+`\n` for newline character (NL), `\t` for horizontal tabulation (HT, TAB)
+and `\b` for backspace (BS).  No other character escape codes, nor octal
+char sequences are valid.
+
+Variable value ending in a `\` is continued on the next line in the 
+customary UNIX fashion.
+
+Some variables may require special value format.
 
 Example
 ~~~~~~~

  reply	other threads:[~2007-01-19 22:43 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-15  0:44 [RFC] Git config file reader in Perl (WIP) Jakub Narebski
2007-01-15  7:08 ` Eric Wong
2007-01-15  9:03   ` Jakub Narebski
2007-01-15  9:56     ` Eric Wong
2007-01-15 10:01       ` Shawn O. Pearce
2007-01-15 10:32       ` Jakub Narebski
2007-01-15 11:26         ` Eric Wong
2007-01-15 12:15           ` Johannes Schindelin
2007-01-15 15:34             ` Nikolai Weibull
2007-01-15 15:44               ` Johannes Schindelin
2007-01-15 16:22                 ` Nikolai Weibull
2007-01-15 16:00               ` Jakub Narebski
2007-01-16 10:45               ` Junio C Hamano
2007-01-16 11:12                 ` Johannes Schindelin
2007-01-16 14:14                   ` Jakub Narebski
2007-01-16 22:17                     ` Nikolai Weibull
2007-01-16 22:37                       ` Jakub Narebski
2007-01-16 22:56                         ` Johannes Schindelin
2007-01-16 23:24                           ` Jakub Narebski
2007-01-17  8:51                             ` Johannes Schindelin
2007-01-17  9:48                               ` Jakub Narebski
2007-01-17 10:44                                 ` Johannes Schindelin
2007-01-17 12:11                                   ` Jakub Narebski
2007-01-17 12:37                                     ` Johannes Schindelin
2007-01-17 14:00                                       ` Jakub Narebski
2007-01-19 12:10                                         ` Jakub Narebski
2007-01-19 12:25                                           ` Jakub Narebski
2007-01-19 13:20                                           ` Johannes Schindelin
2007-01-19 22:44                                             ` Jakub Narebski [this message]
2007-01-20  0:08                                               ` Johannes Schindelin
2007-01-20  0:59                                                 ` Jakub Narebski
2007-01-20  0:19                                               ` Junio C Hamano
2007-01-20  1:25                                                 ` [PATCH] config_set_multivar(): disallow newlines in keys Johannes Schindelin
2007-01-20  1:40                                                   ` Junio C Hamano
2007-01-22 15:06                                                   ` Alex Riesen
2007-01-22 15:21                                                     ` Johannes Schindelin
2007-01-22 15:33                                                       ` Alex Riesen
2007-01-22 15:44                                                         ` Johannes Schindelin
2007-01-22 16:09                                                           ` Alex Riesen
2007-01-23 11:26                                                             ` Johannes Schindelin
2007-01-23 12:47                                                               ` Alex Riesen
2007-01-20 14:03                                                 ` [PATCH] Documentation/config.txt: Document config file syntax better Jakub Narebski
2007-01-22 15:25                                                   ` Jakub Narebski
2007-01-24 14:14                                                     ` [PATCH 2/1] Documentation/config.txt: Correct info about subsection name Jakub Narebski
2007-01-16 22:42                       ` [RFC] Git config file reader in Perl (WIP) Johannes Schindelin
2007-01-17 18:08                         ` Nikolai Weibull
2007-01-17 19:22                           ` Jakub Narebski
2007-01-17 20:01                             ` Nikolai Weibull
2007-01-17 19:25                           ` Jakub Narebski
2007-01-18  0:50                           ` Johannes Schindelin
2007-01-16 19:09                   ` Eric Wong
2007-01-16  9:51             ` Eric Wong
2007-01-16 10:47               ` Johannes Schindelin
2007-01-16 19:53                 ` Eric Wong

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=200701192344.11972.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=junkio@cox.net \
    --cc=normalperson@yhbt.net \
    --cc=now@bitwi.se \
    /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.