git-rev-parse: parse ".." before simple SHA1's
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 20 Jun 2005 15:29:13 +0000 (08:29 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 20 Jun 2005 15:29:13 +0000 (08:29 -0700)
This fixes "<hexsha1>..*", since get_sha1() will happily ignore any
garbage at the end and thus we never got to the ".." check before.

rev-parse.c

index fd5f2dd..1f4f324 100644 (file)
@@ -78,20 +78,6 @@ int main(int argc, char **argv)
                        printf("%s\n", arg);
                        continue;
                }
-               if (!get_sha1(arg, sha1)) {
-                       if (no_revs)
-                               continue;
-                       def = NULL;
-                       printf("%s\n", sha1_to_hex(sha1));
-                       continue;
-               }
-               if (*arg == '^' && !get_sha1(arg+1, sha1)) {
-                       if (no_revs)
-                               continue;
-                       def = NULL;
-                       printf("^%s\n", sha1_to_hex(sha1));
-                       continue;
-               }
                dotdot = strstr(arg, "..");
                if (dotdot) {
                        unsigned char end[20];
@@ -111,6 +97,20 @@ int main(int argc, char **argv)
                        }
                        *dotdot = '.';
                }
+               if (!get_sha1(arg, sha1)) {
+                       if (no_revs)
+                               continue;
+                       def = NULL;
+                       printf("%s\n", sha1_to_hex(sha1));
+                       continue;
+               }
+               if (*arg == '^' && !get_sha1(arg+1, sha1)) {
+                       if (no_revs)
+                               continue;
+                       def = NULL;
+                       printf("^%s\n", sha1_to_hex(sha1));
+                       continue;
+               }
                if (revs_only)
                        continue;
                def = NULL;