blame: handle --no-abbrev
commited58d8088b570e7629bfc94b87e433f05229ef3c
authorJeff King <peff@peff.net>
Fri, 6 Jan 2017 04:18:08 +0000 (5 23:18 -0500)
committerJunio C Hamano <gitster@pobox.com>
Sun, 8 Jan 2017 03:34:54 +0000 (7 19:34 -0800)
treeeb096878c25f190d13ce80c35f3e03d74c727c12
parent91229834c293302c4456e732ddef7ace0df6e471
blame: handle --no-abbrev

You can already ask blame for full sha1s with "-l" or with
"--abbrev=40". But for consistency with other parts of Git,
we should support "--no-abbrev".

Worse, blame already accepts --no-abbrev, but it's totally
broken. When we see --no-abbrev, the abbrev variable is set
to 0, which is then used as a printf precision. For regular
sha1s, that means we print nothing at all (which is very
wrong). For boundary commits we decrement it to "-1", which
printf interprets as "no limit" (which is almost correct,
except it misses the 39-length magic explained in the
previous commit).

Let's detect --no-abbrev and behave as if --abbrev=40 was
given.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/blame.c
t/t8002-blame.sh