aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-01-31 13:32:06 -0800
committerJunio C Hamano <gitster@pobox.com>2017-01-31 13:32:06 -0800
commit46ab22261661a8b4d2e86badc55d26017739dc31 (patch)
treee9352ba61eff34622265b97c350b29b6cc3eddd4
parent867ce0416c74ac5d403765ea94673ab8969b1a81 (diff)
parent48d5014dd42cc4a4465162c9807eaa253715e105 (diff)
downloadgit-46ab22261661a8b4d2e86badc55d26017739dc31.tar.gz
git-46ab22261661a8b4d2e86badc55d26017739dc31.tar.xz
Merge branch 'jc/abbrev-autoscale-config' into maint
Recent update to the default abbreviation length that auto-scales lacked documentation update, which has been corrected. * jc/abbrev-autoscale-config: config.abbrev: document the new default that auto-scales
-rw-r--r--Documentation/config.txt9
-rw-r--r--config.c14
2 files changed, 15 insertions, 8 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt
index aba7568bc..1fee83ca4 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -783,10 +783,11 @@ core.sparseCheckout::
linkgit:git-read-tree[1] for more information.
core.abbrev::
- Set the length object names are abbreviated to. If unspecified,
- many commands abbreviate to 7 hexdigits, which may not be enough
- for abbreviated object names to stay unique for sufficiently long
- time.
+ Set the length object names are abbreviated to. If
+ unspecified or set to "auto", an appropriate value is
+ computed based on the approximate number of packed objects
+ in your repository, which hopefully is enough for
+ abbreviated object names to stay unique for some time.
add.ignoreErrors::
add.ignore-errors (deprecated)::
diff --git a/config.c b/config.c
index 2f1aef742..0b9c1b62b 100644
--- a/config.c
+++ b/config.c
@@ -836,10 +836,16 @@ static int git_default_core_config(const char *var, const char *value)
}
if (!strcmp(var, "core.abbrev")) {
- int abbrev = git_config_int(var, value);
- if (abbrev < minimum_abbrev || abbrev > 40)
- return -1;
- default_abbrev = abbrev;
+ if (!value)
+ return config_error_nonbool(var);
+ if (!strcasecmp(value, "auto"))
+ default_abbrev = -1;
+ else {
+ int abbrev = git_config_int(var, value);
+ if (abbrev < minimum_abbrev || abbrev > 40)
+ return error("abbrev length out of range: %d", abbrev);
+ default_abbrev = abbrev;
+ }
return 0;
}