rev-parse: make --show-toplevel without a worktree an error
authorJeff King <peff@peff.net>
Tue, 19 Nov 2019 08:05:43 +0000 (03:05 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 20 Nov 2019 01:19:58 +0000 (10:19 +0900)
commit2d92ab32fd624349d308334befbf07adf9f179b9
tree03c48980c4a44bb537b12b3736334eb83b276bd8
parentd9f6f3b6195a0ca35642561e530798ad1469bd41
rev-parse: make --show-toplevel without a worktree an error

Ever since it was introduced in 7cceca5ccc (Add 'git rev-parse
--show-toplevel' option., 2010-01-12), the --show-toplevel option has
treated a missing working tree as a quiet success: it neither prints a
toplevel path, but nor does it report any kind of error.

While a caller could distinguish this case by looking for an empty
response, the behavior is rather confusing. We're better off complaining
that there is no working tree, as other internal commands would do in
similar cases (e.g., "git status" or any builtin with NEED_WORK_TREE set
would just die()). So let's do the same here.

While we're at it, let's clarify the documentation and add some tests,
both for the new behavior and for the more mundane case (which was not
covered).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-rev-parse.txt
builtin/rev-parse.c
t/t1500-rev-parse.sh