setup_revisions used to consider any argument starting with "-" to be either a valid or an unknown option. Teach setup_revisions to check if an argument is a revision before adding it as an unknown option (something that setup_revisions didn't understand) to argv, and moving on to the next argument. This patch prepares the addition of "-" as a shorthand for "previous branch". Signed-off-by: Siddharth Kannan <kannan.siddharth12@xxxxxxxxx> --- revision.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/revision.c b/revision.c index 8d4ddae..5470c33 100644 --- a/revision.c +++ b/revision.c @@ -2203,6 +2203,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s read_from_stdin = 0; for (left = i = 1; i < argc; i++) { const char *arg = argv[i]; + int maybe_opt = 0; if (*arg == '-') { int opts; @@ -2232,15 +2233,17 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s } if (opts < 0) exit(128); - /* arg is an unknown option */ - argv[left++] = arg; - continue; + maybe_opt = 1; } if (!handle_revision_arg(arg, revs, flags, revarg_opt)) got_rev_arg = 1; - else { + else if (maybe_opt) { + /* arg is an unknown option */ + argv[left++] = arg; + continue; + } else { int j; if (seen_dashdash || *arg == '^') die("bad revision '%s'", arg); -- 2.1.4