summaryrefslogtreecommitdiff
path: root/revision.c
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2011-04-21 05:48:24 -0500
committerJunio C Hamano <gitster@pobox.com>2011-04-21 10:56:39 -0700
commit0fc63ec4e7291361b59e12433e5c07117951cf19 (patch)
tree80f1dc27d40741210cf7799e125f8af3f824180a /revision.c
parentf6aca0dc4d6b7ed9bf2bff399e3fcb47eafdce4b (diff)
downloadgit-0fc63ec4e7291361b59e12433e5c07117951cf19.tar.gz
revisions: allow --glob and friends in parse_options-enabled commands
As v1.6.0-rc2~42 (2008-07-31) explains, even pseudo-options like --not and --glob that need to be parsed in order with revisions should be marked handled by handle_revision_opt to avoid an error when parse_revision_opt callers like "git shortlog" encounter them. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'revision.c')
-rw-r--r--revision.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/revision.c b/revision.c
index c9b1e32234..238976466d 100644
--- a/revision.c
+++ b/revision.c
@@ -1178,7 +1178,9 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
!strcmp(arg, "--tags") || !strcmp(arg, "--remotes") ||
!strcmp(arg, "--reflog") || !strcmp(arg, "--not") ||
!strcmp(arg, "--no-walk") || !strcmp(arg, "--do-walk") ||
- !strcmp(arg, "--bisect"))
+ !strcmp(arg, "--bisect") || !prefixcmp(arg, "--glob=") ||
+ !prefixcmp(arg, "--branches=") || !prefixcmp(arg, "--tags=") ||
+ !prefixcmp(arg, "--remotes="))
{
unkv[(*unkc)++] = arg;
return 1;
@@ -1534,6 +1536,16 @@ static int handle_revision_pseudo_opt(const char *submodule,
const char *optarg;
int argcount;
+ /*
+ * NOTE!
+ *
+ * Commands like "git shortlog" will not accept the options below
+ * unless parse_revision_opt queues them (as opposed to erroring
+ * out).
+ *
+ * When implementing your new pseudo-option, remember to
+ * register it in the list at the top of handle_revision_opt.
+ */
if (!strcmp(arg, "--all")) {
handle_refs(submodule, revs, *flags, for_each_ref_submodule);
handle_refs(submodule, revs, *flags, head_ref_submodule);