abbrev: prepare for new world order
commit7b5b7721affae7040cac77d647a5ec8628f0f845
authorJunio C Hamano <gitster@pobox.com>
Sat, 1 Oct 2016 00:19:36 +0000 (30 17:19 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 3 Oct 2016 19:54:22 +0000 (3 12:54 -0700)
tree1eff2af4b3ac3ac51a7f193ca8b4f656ccf15de6
parent65acfeacaa6e50c92a6ac18dc08356026a99b3f3
abbrev: prepare for new world order

The code that sets custom abbreviation length, in response to
command line argument, often does something like this:

if (skip_prefix(arg, "--abbrev=", &arg))
abbrev = atoi(arg);
else if (!strcmp("--abbrev", &arg))
abbrev = DEFAULT_ABBREV;
/* make the value sane */
if (abbrev < 0 || 40 < abbrev)
abbrev = ... some sane value ...

However, it is pointless to sanity-check and tweak the value
obtained from DEFAULT_ABBREV.  We are going to allow it to be
initially set to -1 to signal that the default abbreviation length
must be auto sized upon the first request to abbreviate, based on
the number of objects in the repository, and when that happens,
rejecting or tweaking a negative value to a "saner" one will
negatively interfere with the auto sizing.  The codepaths for

    git rev-parse --short <object>
    git diff --raw --abbrev

do exactly that; allow them to pass possibly negative abbrevs
intact, that will come from DEFAULT_ABBREV in the future.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rev-parse.c
diff.c