names do not conflict with those that are used by Git itself and
other popular tools, and describe them in your documentation.
-include::config/add.txt[]
+include::config/add.adoc[]
+
+include::config/advice.adoc[]
-include::config/advice.txt[]
+include::config/alias.adoc[]
-include::config/alias.txt[]
+include::config/am.adoc[]
-include::config/am.txt[]
+include::config/apply.adoc[]
-include::config/apply.txt[]
+include::config/attr.adoc[]
-include::config/attr.txt[]
+include::config/bitmap-pseudo-merge.adoc[]
-include::config/bitmap-pseudo-merge.txt[]
+include::config/blame.adoc[]
-include::config/blame.txt[]
+include::config/branch.adoc[]
-include::config/branch.txt[]
+include::config/browser.adoc[]
-include::config/browser.txt[]
+include::config/bundle.adoc[]
-include::config/bundle.txt[]
+include::config/checkout.adoc[]
-include::config/checkout.txt[]
+include::config/clean.adoc[]
-include::config/clean.txt[]
+include::config/clone.adoc[]
-include::config/clone.txt[]
+include::config/color.adoc[]
-include::config/color.txt[]
+include::config/column.adoc[]
-include::config/column.txt[]
+include::config/commit.adoc[]
-include::config/commit.txt[]
+include::config/commitgraph.adoc[]
-include::config/commitgraph.txt[]
+include::config/completion.adoc[]
-include::config/completion.txt[]
+include::config/core.adoc[]
-include::config/core.txt[]
+include::config/credential.adoc[]
-include::config/credential.txt[]
+include::config/diff.adoc[]
-include::config/diff.txt[]
+include::config/difftool.adoc[]
-include::config/difftool.txt[]
+include::config/extensions.adoc[]
-include::config/extensions.txt[]
+include::config/fastimport.adoc[]
-include::config/fastimport.txt[]
+include::config/feature.adoc[]
-include::config/feature.txt[]
+include::config/fetch.adoc[]
-include::config/fetch.txt[]
+include::config/filter.adoc[]
-include::config/filter.txt[]
+include::config/format.adoc[]
-include::config/format.txt[]
+include::config/fsck.adoc[]
-include::config/fsck.txt[]
+include::config/fsmonitor--daemon.adoc[]
-include::config/fsmonitor--daemon.txt[]
+include::config/gc.adoc[]
-include::config/gc.txt[]
+include::config/gitcvs.adoc[]
-include::config/gitcvs.txt[]
+include::config/gitweb.adoc[]
-include::config/gitweb.txt[]
+include::config/gpg.adoc[]
-include::config/gpg.txt[]
+include::config/grep.adoc[]
-include::config/grep.txt[]
+include::config/gui.adoc[]
-include::config/gui.txt[]
+include::config/guitool.adoc[]
-include::config/guitool.txt[]
+include::config/help.adoc[]
-include::config/help.txt[]
+include::config/http.adoc[]
-include::config/http.txt[]
+include::config/i18n.adoc[]
-include::config/i18n.txt[]
+include::config/imap.adoc[]
-include::config/imap.txt[]
+include::config/includeif.adoc[]
-include::config/includeif.txt[]
+include::config/index.adoc[]
-include::config/index.txt[]
+include::config/init.adoc[]
-include::config/init.txt[]
+include::config/instaweb.adoc[]
-include::config/instaweb.txt[]
+include::config/interactive.adoc[]
-include::config/interactive.txt[]
+include::config/log.adoc[]
-include::config/log.txt[]
+include::config/lsrefs.adoc[]
-include::config/lsrefs.txt[]
+include::config/mailinfo.adoc[]
-include::config/mailinfo.txt[]
+include::config/mailmap.adoc[]
-include::config/mailmap.txt[]
+include::config/maintenance.adoc[]
-include::config/maintenance.txt[]
+include::config/man.adoc[]
-include::config/man.txt[]
+include::config/merge.adoc[]
-include::config/merge.txt[]
+include::config/mergetool.adoc[]
-include::config/mergetool.txt[]
+include::config/notes.adoc[]
-include::config/notes.txt[]
+include::config/pack.adoc[]
-include::config/pack.txt[]
+include::config/pager.adoc[]
-include::config/pager.txt[]
+include::config/pretty.adoc[]
-include::config/pretty.txt[]
+include::config/promisor.adoc[]
-include::config/promisor.txt[]
+include::config/protocol.adoc[]
-include::config/protocol.txt[]
+include::config/pull.adoc[]
-include::config/pull.txt[]
+include::config/push.adoc[]
-include::config/push.txt[]
+include::config/rebase.adoc[]
-include::config/rebase.txt[]
+include::config/receive.adoc[]
-include::config/receive.txt[]
+include::config/reftable.adoc[]
-include::config/reftable.txt[]
+include::config/remote.adoc[]
-include::config/remote.txt[]
+include::config/remotes.adoc[]
-include::config/remotes.txt[]
+include::config/repack.adoc[]
-include::config/repack.txt[]
+include::config/rerere.adoc[]
-include::config/rerere.txt[]
+include::config/revert.adoc[]
-include::config/revert.txt[]
+include::config/safe.adoc[]
-include::config/safe.txt[]
+include::config/sendemail.adoc[]
-include::config/sendemail.txt[]
+include::config/sequencer.adoc[]
-include::config/sequencer.txt[]
+include::config/showbranch.adoc[]
-include::config/showbranch.txt[]
++include::config/sideband.adoc[]
+
-include::config/sideband.txt[]
+include::config/sparse.adoc[]
-include::config/sparse.txt[]
+include::config/splitindex.adoc[]
-include::config/splitindex.txt[]
+include::config/ssh.adoc[]
-include::config/ssh.txt[]
+include::config/stash.adoc[]
-include::config/stash.txt[]
+include::config/status.adoc[]
-include::config/status.txt[]
+include::config/submodule.adoc[]
-include::config/submodule.txt[]
+include::config/tag.adoc[]
-include::config/tag.txt[]
+include::config/tar.adoc[]
-include::config/tar.txt[]
+include::config/trace2.adoc[]
-include::config/trace2.txt[]
+include::config/trailer.adoc[]
-include::config/transfer.txt[]
+include::config/transfer.adoc[]
-include::config/uploadarchive.txt[]
+include::config/uploadarchive.adoc[]
-include::config/uploadpack.txt[]
+include::config/uploadpack.adoc[]
-include::config/url.txt[]
+include::config/url.adoc[]
-include::config/user.txt[]
+include::config/user.adoc[]
-include::config/versionsort.txt[]
+include::config/versionsort.adoc[]
-include::config/web.txt[]
+include::config/web.adoc[]
-include::config/worktree.txt[]
+include::config/worktree.adoc[]
{ "error", GIT_COLOR_BOLD_RED },
};
+ static enum {
+ ALLOW_NO_CONTROL_CHARACTERS = 0,
+ ALLOW_ANSI_COLOR_SEQUENCES = 1<<0,
+ ALLOW_ANSI_CURSOR_MOVEMENTS = 1<<1,
+ ALLOW_ANSI_ERASE = 1<<2,
+ ALLOW_DEFAULT_ANSI_SEQUENCES = ALLOW_ANSI_COLOR_SEQUENCES,
+ ALLOW_ALL_CONTROL_CHARACTERS = 1<<3,
+ } allow_control_characters = ALLOW_DEFAULT_ANSI_SEQUENCES;
+
+ static inline int skip_prefix_in_csv(const char *value, const char *prefix,
+ const char **out)
+ {
+ if (!skip_prefix(value, prefix, &value) ||
+ (*value && *value != ','))
+ return 0;
+ *out = value + !!*value;
+ return 1;
+ }
+
+ static void parse_allow_control_characters(const char *value)
+ {
+ allow_control_characters = ALLOW_NO_CONTROL_CHARACTERS;
+ while (*value) {
+ if (skip_prefix_in_csv(value, "default", &value))
+ allow_control_characters |= ALLOW_DEFAULT_ANSI_SEQUENCES;
+ else if (skip_prefix_in_csv(value, "color", &value))
+ allow_control_characters |= ALLOW_ANSI_COLOR_SEQUENCES;
+ else if (skip_prefix_in_csv(value, "cursor", &value))
+ allow_control_characters |= ALLOW_ANSI_CURSOR_MOVEMENTS;
+ else if (skip_prefix_in_csv(value, "erase", &value))
+ allow_control_characters |= ALLOW_ANSI_ERASE;
+ else if (skip_prefix_in_csv(value, "true", &value))
+ allow_control_characters = ALLOW_ALL_CONTROL_CHARACTERS;
+ else if (skip_prefix_in_csv(value, "false", &value))
+ allow_control_characters = ALLOW_NO_CONTROL_CHARACTERS;
+ else
+ warning(_("unrecognized value for `sideband."
+ "allowControlCharacters`: '%s'"), value);
+ }
+ }
+
/* Returns a color setting (GIT_COLOR_NEVER, etc). */
-static int use_sideband_colors(void)
+static enum git_colorbool use_sideband_colors(void)
{
- static int use_sideband_colors_cached = -1;
-
+ static enum git_colorbool use_sideband_colors_cached = GIT_COLOR_UNKNOWN;
-
++ struct repository *r = the_repository;
const char *key = "color.remote";
struct strbuf sb = STRBUF_INIT;
const char *value;
int i;
- if (use_sideband_colors_cached >= 0)
+ if (use_sideband_colors_cached != GIT_COLOR_UNKNOWN)
return use_sideband_colors_cached;
- if (!repo_config_get_string_tmp(the_repository, key, &value))
- switch (git_config_get_maybe_bool("sideband.allowcontrolcharacters", &i)) {
++ switch (repo_config_get_maybe_bool(r, "sideband.allowcontrolcharacters", &i)) {
+ case 0: /* Boolean value */
+ allow_control_characters = i ? ALLOW_ALL_CONTROL_CHARACTERS :
+ ALLOW_NO_CONTROL_CHARACTERS;
+ break;
+ case -1: /* non-Boolean value */
- if (git_config_get_string_tmp("sideband.allowcontrolcharacters",
- &value))
++ if (repo_config_get_string_tmp(r, "sideband.allowcontrolcharacters",
++ &value))
+ ; /* huh? `get_maybe_bool()` returned -1 */
+ else
+ parse_allow_control_characters(value);
+ break;
+ default:
+ break; /* not configured */
+ }
+
- if (!git_config_get_string_tmp(key, &value))
++ if (!repo_config_get_string_tmp(r, key, &value))
use_sideband_colors_cached = git_config_colorbool(key, value);
- else if (!repo_config_get_string_tmp(the_repository, "color.ui", &value))
- else if (!git_config_get_string_tmp("color.ui", &value))
++ else if (!repo_config_get_string_tmp(r, "color.ui", &value))
use_sideband_colors_cached = git_config_colorbool("color.ui", value);
else
use_sideband_colors_cached = GIT_COLOR_AUTO;
for (i = 0; i < ARRAY_SIZE(keywords); i++) {
strbuf_reset(&sb);
strbuf_addf(&sb, "%s.%s", key, keywords[i].keyword);
- if (repo_config_get_string_tmp(the_repository, sb.buf, &value))
- if (git_config_get_string_tmp(sb.buf, &value))
++ if (repo_config_get_string_tmp(r, sb.buf, &value))
continue;
color_parse(value, keywords[i].color);
}