Code

Teach git-rev-parse about revision-specifying arguments
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 13 Jun 2005 18:14:20 +0000 (11:14 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 13 Jun 2005 18:14:20 +0000 (11:14 -0700)
Things like "--max-count=xxx" are "rev-only".

rev-parse.c

index f4a6cc2c2adc5c4831a5a8d30de65eee846ee708..fd5f2ddca36ea45cd9feaf706a53aa66956db233 100644 (file)
@@ -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;
                }