]> git.ipfire.org Git - thirdparty/git.git/commit - sha1-name.c
get_sha1: avoid repeating ourselves via ONLY_TO_DIE
authorJeff King <peff@peff.net>
Mon, 26 Sep 2016 11:59:15 +0000 (07:59 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 26 Sep 2016 18:46:30 +0000 (11:46 -0700)
commit7243ffdd78d56738e568abb544eba00e8079f329
treeef971ab138686a1dd32ecef9c5a5960a2a543072
parent259942f549eb235e9d7d095c2db8f3dc279f3958
get_sha1: avoid repeating ourselves via ONLY_TO_DIE

When the revision code cannot parse an argument like
"HEAD:foo", it will call maybe_die_on_misspelt_object_name(),
which re-runs get_sha1() with an extra ONLY_TO_DIE flag. We
then spend more effort to generate a better error message.

Unfortunately, a side effect is that our second call may
repeat the same error messages from the original get_sha1()
call. You can see this with:

  $ git show 0017
  error: short SHA1 0017 is ambiguous.
  error: short SHA1 0017 is ambiguous.
  fatal: ambiguous argument '0017': unknown revision or path not in the working tree.
  Use '--' to separate paths from revisions, like this:
  'git <command> [<revision>...] -- [<file>...]'

where the second "error:" line comes from the ONLY_TO_DIE
call.

To fix this, we can make ONLY_TO_DIE imply QUIETLY. This is
a little odd, because the whole point of ONLY_TO_DIE is to
output error messages. But what we want to do is tell the
rest of the get_sha1() code (particularly get_sha1_1()) that
the _regular_ messages should be quiet, but the only-to-die
ones should not.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_name.c
t/t1512-rev-parse-disambiguation.sh