sha1_name: do not trigger detailed diagnosis for file arguments
authorMatthieu Moy <Matthieu.Moy@imag.fr>
Mon, 18 Jun 2012 18:18:20 +0000 (20:18 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 18 Jun 2012 22:13:16 +0000 (15:13 -0700)
commitd7236c4395a0c8742871a72d920f789b5bd4abf6
tree19a28a50e4e05a607409603b4cab19b3e40e8e9a
parent828ea97de486c1693d6e4f2c7347acb50235a85d
sha1_name: do not trigger detailed diagnosis for file arguments

diagnose_invalid_sha1_path() is meant to be called to diagnose a
misspelt <treeish>:<pathname> when <pathname> does not exist in
<treeish>.  However, the code may call it if <treeish>:<pathname> is
invalid (which triggers another call with only_to_die == 1), but for
another reason. This happens when calling e.g.

  git log existing-file HEAD:existing-file

because existing-file is a path and not a revision, the code
verifies that the arguments that follow to be paths.  This leads to
an incorrect message like "existing-file does not exist in HEAD",
even though the path exists in HEAD.

Check that the search for <pathname> in <treeish> fails before
triggering the diagnosis.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_name.c
t/t1506-rev-parse-diagnosis.sh