git-rev-list: add "--parents" command line flag
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 31 May 2005 02:30:07 +0000 (19:30 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 31 May 2005 02:30:07 +0000 (19:30 -0700)
It makes rev-list show the list of parents, the same
way git-rev-tree does (but without the expense).

rev-list.c

index cb1de39..6f76b9d 100644 (file)
@@ -41,7 +41,7 @@ int main(int argc, char **argv)
        unsigned char sha1[2][20];
        struct commit_list *list = NULL;
        struct commit *commit, *end;
-       int i, verbose_header = 0;
+       int i, verbose_header = 0, show_parents = 0;
        unsigned long max_age = -1;
        unsigned long min_age = -1;
        int max_count = -1;
@@ -66,6 +66,10 @@ int main(int argc, char **argv)
                        verbose_header = 1;
                        continue;
                }
+               if (!strcmp(arg, "--parents")) {
+                       show_parents = 1;
+                       continue;
+               }
 
                if (nr_sha > 2 || get_sha1(arg, sha1[nr_sha]))
                        usage(rev_list_usage);
@@ -116,7 +120,15 @@ int main(int argc, char **argv)
                        break;
                if (max_count != -1 && !max_count--)
                        break;
-               printf("%s\n", sha1_to_hex(commit->object.sha1));
+               printf("%s", sha1_to_hex(commit->object.sha1));
+               if (show_parents) {
+                       struct commit_list *parents = commit->parents;
+                       while (parents) {
+                               printf(" %s", sha1_to_hex(parents->item->object.sha1));
+                               parents = parents->next;
+                       }
+               }
+               putchar('\n');
                if (verbose_header)
                        printf("%s%c", commit->buffer, 0);
        }