[PATCH 2/2] rev-parse: diagnose ambiguous revision/filename arguments
- From
Jeff King <peff@peff.net>
- Date
- Dec 6, 2013, 21:15 UTC
- Message-ID
- <20131206211509.GB20536@sigill.intra.peff.net>
- In-Reply-To
- <20131206211222.GB20482@sigill.intra.peff.net>
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@peff.net> --- 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