]> git.ipfire.org Git - thirdparty/git.git/commit
config: allow tweaking whitespace between value and comment
authorJunio C Hamano <gitster@pobox.com>
Fri, 15 Mar 2024 22:26:40 +0000 (15:26 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 15 Mar 2024 23:07:39 +0000 (16:07 -0700)
commit31399a6b6166cf76cc533bc9915878211607ed80
tree25d8d683a1ccb0957f27f80889f0ffc8b8c65d82
parentfbad334db9cff30cdf1fe3d498dec737bfae38df
config: allow tweaking whitespace between value and comment

Extending the previous step, this allows the whitespace placed after
the value before the "# comment message" to be tweaked by tweaking
the preprocessing rule to:

 * If the given comment string begins with one or more whitespace
   characters followed by '#', it is passed intact.

 * If the given comment string begins with '#', a Space is
   prepended.

 * Otherwise, " # " (Space, '#', Space) is prefixed.

 * A string with LF in it cannot be used as a comment string.

Unlike the previous step, which unconditionally added a space after
the value before writing the "# comment string", because the above
preprocessing already gives a whitespace before the '#', the
resulting string is written immediately after copying the value.

And the sanity checking rule becomes

 * comment string after the above massaging that comes into
   git_config_set_multivar_in_file_gently() must

   - begin with zero or more whitespace characters followed by '#'.
   - not have a LF in it.

I personally think this is over-engineered, but since I thought
things through anyway, here it is in the patch form.  The logic to
tweak end-user supplied comment string is encapsulated in a new
helper function, git_config_prepare_comment_string(), so if new
front-end callers would want to use the same massaging rules, it is
easily reused.

Unfortunately I do not think of a way to tweak the preprocessing
rules further to optionally allow having no blank after the value,
i.e. to produce

[section]
variable = value#comment

(which is a valid way to say section.variable=value, by the way)
without sacrificing the ergonomics for the more usual case, so this
time I really stop here.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-config.txt
builtin/config.c
config.c
config.h
t/t1300-config.sh