X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;ds=sidebyside;f=rev-parse.c;h=9161faed1e916c0a3d53c0df4905a2261e626131;hb=07e8ab9be913bd50595707f21a896ac15c4f5a89;hp=3c99a79eb354036137a28cc586ca58555f6162bc;hpb=3af06987eb3c376e2f1cc6dfa9c9c510b9e228cf;p=git.git diff --git a/rev-parse.c b/rev-parse.c index 3c99a79e..9161faed 100644 --- a/rev-parse.c +++ b/rev-parse.c @@ -48,11 +48,16 @@ static int is_rev_argument(const char *arg) "--show-breaks", "--sparse", "--topo-order", + "--date-order", "--unpacked", NULL }; const char **p = rev_args; + /* accept -, like traditional "head" */ + if ((*arg == '-') && isdigit(arg[1])) + return 1; + for (;;) { const char *str = *p++; int len; @@ -103,12 +108,15 @@ static void show_rev(int type, const unsigned char *sha1, const char *name) } /* Output a flag, only if filter allows it. */ -static void show_flag(char *arg) +static int show_flag(char *arg) { if (!(filter & DO_FLAGS)) - return; - if (filter & (is_rev_argument(arg) ? DO_REVS : DO_NOREV)) + return 0; + if (filter & (is_rev_argument(arg) ? DO_REVS : DO_NOREV)) { show(arg); + return 1; + } + return 0; } static void show_default(void) @@ -143,11 +151,14 @@ static void show_datestring(const char *flag, const char *datestr) show(buffer); } -static void show_file(const char *arg) +static int show_file(const char *arg) { show_default(); - if ((filter & (DO_NONFLAGS|DO_NOREV)) == (DO_NONFLAGS|DO_NOREV)) + if ((filter & (DO_NONFLAGS|DO_NOREV)) == (DO_NONFLAGS|DO_NOREV)) { show(arg); + return 1; + } + return 0; } int main(int argc, char **argv) @@ -292,9 +303,8 @@ int main(int argc, char **argv) show_datestring("--min-age=", arg+8); continue; } - if (verify) + if (show_flag(arg) && verify) die("Needed a single revision"); - show_flag(arg); continue; } @@ -323,14 +333,13 @@ int main(int argc, char **argv) show_rev(REVERSED, sha1, arg+1); continue; } + as_is = 1; + if (!show_file(arg)) + continue; if (verify) die("Needed a single revision"); - if ((filter & DO_REVS) && - (filter & DO_NONFLAGS) && /* !def && */ - lstat(arg, &st) < 0) + if (lstat(arg, &st) < 0) die("'%s': %s", arg, strerror(errno)); - as_is = 1; - show_file(arg); } show_default(); if (verify && revs_count != 1)