Browse Source

git-rev-parse: parse ".." before simple SHA1's

This fixes "<hexsha1>..*", since get_sha1() will happily ignore any
garbage at the end and thus we never got to the ".." check before.
maint
Linus Torvalds 20 years ago
parent
commit
800644c5cb
  1. 28
      rev-parse.c

28
rev-parse.c

@ -78,20 +78,6 @@ int main(int argc, char **argv)
printf("%s\n", arg); printf("%s\n", arg);
continue; 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, ".."); dotdot = strstr(arg, "..");
if (dotdot) { if (dotdot) {
unsigned char end[20]; unsigned char end[20];
@ -111,6 +97,20 @@ int main(int argc, char **argv)
} }
*dotdot = '.'; *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) if (revs_only)
continue; continue;
def = NULL; def = NULL;

Loading…
Cancel
Save