X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=revision.c;h=e76da0d448f81d8b6b496990bc2568fef3662671;hb=265ae188267fda441f92e513fb89641f78e982fd;hp=038693caba69a9274b632510c9ee8a14a87b6eee;hpb=4b7f59af2a5b072a0a3950c956842e4d6223a167;p=git.git diff --git a/revision.c b/revision.c index 038693cab..e76da0d44 100644 --- a/revision.c +++ b/revision.c @@ -896,7 +896,8 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch continue; argv[i] = NULL; argc = i; - revs->prune_data = get_pathspec(revs->prefix, argv + i + 1); + if (argv[i + 1]) + revs->prune_data = get_pathspec(revs->prefix, argv + i + 1); seen_dashdash = 1; break; } @@ -1023,6 +1024,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch } if (!strcmp(arg, "--cherry-pick")) { revs->cherry_pick = 1; + revs->limited = 1; continue; } if (!strcmp(arg, "--objects")) { @@ -1132,22 +1134,11 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch continue; } if (!strncmp(arg, "--date=", 7)) { - if (!strcmp(arg + 7, "relative")) - revs->date_mode = DATE_RELATIVE; - else if (!strcmp(arg + 7, "iso8601") || - !strcmp(arg + 7, "iso")) - revs->date_mode = DATE_ISO8601; - else if (!strcmp(arg + 7, "rfc2822") || - !strcmp(arg + 7, "rfc")) - revs->date_mode = DATE_RFC2822; - else if (!strcmp(arg + 7, "short")) - revs->date_mode = DATE_SHORT; - else if (!strcmp(arg + 7, "local")) - revs->date_mode = DATE_LOCAL; - else if (!strcmp(arg + 7, "default")) - revs->date_mode = DATE_NORMAL; - else - die("unknown date format %s", arg); + revs->date_mode = parse_date_format(arg + 7); + continue; + } + if (!strcmp(arg, "--log-size")) { + revs->show_log_size = 1; continue; } @@ -1203,8 +1194,6 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch opts = diff_opt_parse(&revs->diffopt, argv+i, argc-i); if (opts > 0) { - if (strcmp(argv[i], "-z")) - revs->diff = 1; i += opts - 1; continue; } @@ -1248,6 +1237,14 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch add_pending_object_with_mode(revs, object, def, mode); } + /* Did the user ask for any diff output? Run the diff! */ + if (revs->diffopt.output_format & ~DIFF_FORMAT_NO_OUTPUT) + revs->diff = 1; + + /* Pickaxe and rename following needs diffs */ + if (revs->diffopt.pickaxe || revs->diffopt.follow_renames) + revs->diff = 1; + if (revs->topo_order) revs->limited = 1; @@ -1273,6 +1270,9 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch compile_grep_patterns(revs->grep_filter); } + if (revs->reverse && revs->reflog_info) + die("cannot combine --reverse with --walk-reflogs"); + return left; }