SYNOPSIS
--------
[verse]
-'git config' [<file-option>] [--type=<type>] [--comment=<value>] [--fixed-value] [--show-origin] [--show-scope] [-z|--null] <name> [<value> [<value-pattern>]]
-'git config' [<file-option>] [--type=<type>] [--comment=<value>] --add <name> <value>
-'git config' [<file-option>] [--type=<type>] [--comment=<value>] [--fixed-value] --replace-all <name> <value> [<value-pattern>]
+'git config' [<file-option>] [--type=<type>] [--comment=<message>] [--fixed-value] [--show-origin] [--show-scope] [-z|--null] <name> [<value> [<value-pattern>]]
+'git config' [<file-option>] [--type=<type>] [--comment=<message>] --add <name> <value>
+'git config' [<file-option>] [--type=<type>] [--comment=<message>] [--fixed-value] --replace-all <name> <value> [<value-pattern>]
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get <name> [<value-pattern>]
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get-all <name> [<value-pattern>]
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] [--name-only] --get-regexp <name-regex> [<value-pattern>]
values. This is the same as providing '^$' as the `value-pattern`
in `--replace-all`.
---comment <value>::
- Append a comment to new or modified lines. A '#' character will be
- unconditionally prepended to the value. The value must not contain
- linefeed characters (no multi-line comments are permitted).
+--comment <message>::
+ Append a comment at the end of new or modified lines.
+ Unless _<message>_ begins with "#", a string "# " (hash
+ followed by a space) is prepended to it. The _<message>_ must not
+ contain linefeed characters (no multi-line comments are permitted).
--get::
Get the value for a given key (optionally filtered by a regex
OPT_BOOL(0, "show-origin", &show_origin, N_("show origin of config (file, standard input, blob, command line)")),
OPT_BOOL(0, "show-scope", &show_scope, N_("show scope of config (worktree, local, global, system, command)")),
OPT_STRING(0, "default", &default_value, N_("value"), N_("with --get, use default value when missing entry")),
- OPT_STRING(0, "comment", &comment, N_("value"), N_("human-readable comment string (# will be prepended automatically)")),
+ OPT_STRING(0, "comment", &comment, N_("value"), N_("human-readable comment string (# will be prepended as needed)")),
OPT_END(),
};
}
if (comment &&
- !(actions & (ACTION_ADD|ACTION_SET|ACTION_SET_ALL|ACTION_REPLACE_ALL))) {
- error(_("--comment is only applicable to add/set/replace operations"));
- usage_builtin_config();
+ !(actions & (ACTION_ADD|ACTION_SET|ACTION_SET_ALL|ACTION_REPLACE_ALL))) {
+ error(_("--comment is only applicable to add/set/replace operations"));
+ usage_builtin_config();
}
/* check usage of --fixed-value */
flags |= CONFIG_FLAGS_FIXED_VALUE;
}
+ if (comment) {
+ if (strchr(comment, '\n'))
+ die(_("no multi-line comment allowed: '%s'"), comment);
+ if (comment[0] != '#')
+ comment = xstrfmt("# %s", comment);
+ }
+
if (actions & PAGING_ACTIONS)
setup_auto_pager("config", 1);
break;
}
- if (comment) {
- if (strchr(comment, '\n'))
- die(_("multi-line comments are not permitted: '%s'"), comment);
- else
- strbuf_addf(&sb, "%s #%s\n", quote, comment);
- } else
+ if (comment)
+ strbuf_addf(&sb, "%s %s\n", quote, comment);
+ else
strbuf_addf(&sb, "%s\n", quote);
ret = write_in_full(fd, sb.buf, sb.len);
size_t contents_sz;
struct config_store_data store = CONFIG_STORE_INIT;
+ if (comment) {
+ /*
+ * The front-end must have massaged the comment string
+ * properly before calling us.
+ */
+ if (strchr(comment, '\n'))
+ BUG("multi-line comments are not permitted: '%s'", comment);
+ if (comment[0] != '#')
+ BUG("comment should begin with '#': '%s'", comment);
+ }
+
/* parse-key returns negative; flip the sign to feed exit(3) */
ret = 0 - git_config_parse_key(key, &store.key, &store.baselen);
if (ret)
[section]
Movie = BadPhysics
UPPERCASE = true
- penguin = gentoo #Pygoscelis papua
- disposition = peckish #find fish
- foo = bar ## abc
+ penguin = gentoo # Pygoscelis papua
+ disposition = peckish # find fish
+ foo = bar #abc
[Sections]
WhatEver = Second
EOF
+
test_expect_success 'append comments' '
git config --replace-all --comment="Pygoscelis papua" section.penguin gentoo &&
git config --comment="find fish" section.disposition peckish &&
- git config --comment="# abc" section.foo bar &&
+ git config --comment="#abc" section.foo bar &&
test_cmp expect .git/config
'