From ed58d8088b570e7629bfc94b87e433f05229ef3c Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 5 Jan 2017 23:18:08 -0500 Subject: 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 Signed-off-by: Junio C Hamano --- t/t8002-blame.sh | 4 ++++ 1 file changed, 4 insertions(+) (limited to 't/t8002-blame.sh') diff --git a/t/t8002-blame.sh b/t/t8002-blame.sh index c6347ad8f..380e1c105 100755 --- a/t/t8002-blame.sh +++ b/t/t8002-blame.sh @@ -114,4 +114,8 @@ test_expect_success 'blame --abbrev=40 behaves like -l' ' check_abbrev 39 --abbrev=40 ^HEAD ' +test_expect_success '--no-abbrev works like --abbrev=40' ' + check_abbrev 40 --no-abbrev +' + test_done -- cgit v1.2.1