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 ~~~~~~~ - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html