diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-13 11:14:20 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-13 11:14:20 -0700 |
commit | 921d865ea24ffea6452f9b24302e651a347d7905 (patch) | |
tree | 832414cc9be892fca066f7fcde0b54e62b30960f /rev-parse.c | |
parent | d6cb5e5f99b5fe4a83f452923622e50f268d68b1 (diff) | |
download | git-921d865ea24ffea6452f9b24302e651a347d7905.tar.gz |
Teach git-rev-parse about revision-specifying arguments
Things like "--max-count=xxx" are "rev-only".
Diffstat (limited to 'rev-parse.c')
-rw-r--r-- | rev-parse.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/rev-parse.c b/rev-parse.c index f4a6cc2c2a..fd5f2ddca3 100644 --- a/rev-parse.c +++ b/rev-parse.c @@ -5,6 +5,33 @@ */ #include "cache.h" +/* + * Some arguments are relevant "revision" arguments, + * others are about output format or other details. + * This sorts it all out. + */ +static int is_rev_argument(const char *arg) +{ + static const char *rev_args[] = { + "--max-count=", + "--max-age=", + "--min-age=", + "--merge-order", + NULL + }; + const char **p = rev_args; + + for (;;) { + const char *str = *p++; + int len; + if (!str) + return 0; + len = strlen(str); + if (!strncmp(arg, str, len)) + return 1; + } +} + int main(int argc, char **argv) { int i, as_is = 0, revs_only = 0, no_revs = 0; @@ -44,8 +71,10 @@ int main(int argc, char **argv) no_revs = 1; continue; } - if (revs_only) - continue; + if (revs_only | no_revs) { + if (is_rev_argument(arg) != revs_only) + continue; + } printf("%s\n", arg); continue; } |