If you have both a file and a branch named "foo", running: git log foo will complain. We should do the same in rev-parse, and demand that it be disambiguated with: git rev-parse foo -- or git rev-parse -- foo Signed-off-by: Jeff King <peff@xxxxxxxx> --- Hmm, looking at this again, I guess we need to give the same treatment to the try_difference code path above, as "foo..bar" can be ambiguous with a filename (and "git log" seems to diagnose that). builtin/rev-parse.c | 5 ++++- t/t1506-rev-parse-diagnosis.sh | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index bb694ab..3ff4f8a 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -790,8 +790,11 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix) if (!get_sha1(name, sha1)) { if (verify) revs_count++; - else + else { show_rev(type, sha1, name); + if (!has_dashdash) + verify_non_filename(prefix, arg); + } continue; } if (verify) diff --git a/t/t1506-rev-parse-diagnosis.sh b/t/t1506-rev-parse-diagnosis.sh index 613d9bf..7ccbcf4 100755 --- a/t/t1506-rev-parse-diagnosis.sh +++ b/t/t1506-rev-parse-diagnosis.sh @@ -220,4 +220,11 @@ test_expect_success 'arg before dashdash must be a revision (ambiguous)' ' test_cmp expect actual ' +test_expect_success 'ambiguous arg without dashdash' ' + >foobar && + git update-ref refs/heads/foobar HEAD && + test_must_fail git rev-parse foobar 2>stderr && + test_i18ngrep ambiguous stderr +' + test_done -- 1.8.5.524.g6743da6 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html