From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Duy Nguyen <pclouds@gmail.com>, Git Mailing List <git@vger.kernel.org>
Subject: [PATCH v2 3/3] rev-parse: diagnose ambiguous revision/filename arguments
Date: Fri, 6 Dec 2013 17:08:09 -0500 [thread overview]
Message-ID: <20131206220809.GC25620@sigill.intra.peff.net> (raw)
In-Reply-To: <20131206220520.GA30652@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>
---
builtin/rev-parse.c | 12 ++++++++----
t/t1506-rev-parse-diagnosis.sh | 22 ++++++++++++++++++++++
2 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
index a60fcd3..a3a58bf 100644
--- a/builtin/rev-parse.c
+++ b/builtin/rev-parse.c
@@ -781,10 +781,11 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
}
/* Not a flag argument */
- if (try_difference(arg))
- continue;
- if (try_parent_shorthands(arg))
+ if (try_difference(arg) || try_parent_shorthands(arg)) {
+ if (!has_dashdash)
+ verify_non_filename(prefix, arg);
continue;
+ }
name = arg;
type = NORMAL;
if (*arg == '^') {
@@ -794,8 +795,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..dc1f1dc 100755
--- a/t/t1506-rev-parse-diagnosis.sh
+++ b/t/t1506-rev-parse-diagnosis.sh
@@ -220,4 +220,26 @@ test_expect_success 'arg before dashdash must be a revision (ambiguous)' '
test_cmp expect actual
'
+test_expect_success 'ambiguous arg without dashdash (normal)' '
+ >foobar &&
+ git update-ref refs/heads/foobar HEAD &&
+ test_must_fail git rev-parse foobar 2>stderr &&
+ test_i18ngrep ambiguous stderr
+'
+
+test_expect_success 'ambiguous arg without dashdash (difference)' '
+ >one..two &&
+ git update-ref refs/heads/one HEAD &&
+ git update-ref refs/heads/two HEAD &&
+ test_must_fail git rev-parse one..two 2>stderr &&
+ test_i18ngrep ambiguous stderr
+'
+
+test_expect_success 'ambiguous arg without dashdash (parents)' '
+ >"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
next prev parent reply other threads:[~2013-12-06 22:08 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-05 10:07 [BUG] redundant error message Duy Nguyen
2013-12-05 19:15 ` Jeff King
2013-12-05 20:00 ` Junio C Hamano
2013-12-05 20:03 ` Jeff King
2013-12-05 20:15 ` Junio C Hamano
2013-12-05 21:00 ` Jeff King
2013-12-05 21:28 ` Jeff King
2013-12-05 21:44 ` Junio C Hamano
2013-12-06 21:12 ` [PATCH 0/2] rev-parse and "--" Jeff King
2013-12-06 21:13 ` [PATCH 1/2] rev-parse: correctly diagnose revision errors before "--" Jeff King
2013-12-06 21:15 ` [PATCH 2/2] rev-parse: diagnose ambiguous revision/filename arguments Jeff King
2013-12-06 22:05 ` [PATCH v2 0/3] rev-parse and "--" Jeff King
2013-12-06 22:05 ` [PATCH v2 1/3] rev-parse: correctly diagnose revision errors before "--" Jeff King
2013-12-06 23:34 ` Jonathan Nieder
2013-12-06 22:07 ` [PATCH v2 2/3] rev-parse: be more careful with munging arguments Jeff King
2013-12-07 0:04 ` Jonathan Nieder
2013-12-09 21:33 ` Eric Sunshine
2013-12-06 22:08 ` Jeff King [this message]
2013-12-06 23:25 ` [PATCH v2 0/3] rev-parse and "--" Jonathan Nieder
2013-12-06 23:30 ` Jeff King
2013-12-09 19:05 ` Junio C Hamano
2013-12-09 19:12 ` Jonathan Nieder
2013-12-09 19:23 ` Jonathan Nieder
2013-12-09 20:48 ` Junio C Hamano
2013-12-09 20:56 ` Jonathan Nieder
2013-12-09 21:10 ` Junio C Hamano
2013-12-06 1:15 ` [BUG] redundant error message Duy Nguyen
2013-12-06 22:13 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131206220809.GC25620@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pclouds@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).