diff options
author | Junio C Hamano <gitster@pobox.com> | 2024-03-15 15:26:40 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-03-15 16:07:39 -0700 |
commit | 31399a6b6166cf76cc533bc9915878211607ed80 (patch) | |
tree | 25d8d683a1ccb0957f27f80889f0ffc8b8c65d82 /config.h | |
parent | fbad334db9cff30cdf1fe3d498dec737bfae38df (diff) | |
download | git-31399a6b6166cf76cc533bc9915878211607ed80.tar.gz |
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>
Diffstat (limited to 'config.h')
-rw-r--r-- | config.h | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -338,6 +338,8 @@ void git_config_set_multivar(const char *, const char *, const char *, unsigned) int repo_config_set_multivar_gently(struct repository *, const char *, const char *, const char *, unsigned); int git_config_set_multivar_in_file_gently(const char *, const char *, const char *, const char *, const char *, unsigned); +const char *git_config_prepare_comment_string(const char *); + /** * takes four parameters: * |