| /* | |
| * test-revision-walking.c: test revision walking API. | |
| * | |
| * (C) 2012 Heiko Voigt <hvoigt@hvoigt.net> | |
| * | |
| * This code is free software; you can redistribute it and/or modify | |
| * it under the terms of the GNU General Public License version 2 as | |
| * published by the Free Software Foundation. | |
| */ | |
| #include "cache.h" | |
| #include "commit.h" | |
| #include "diff.h" | |
| #include "revision.h" | |
| static void print_commit(struct commit *commit) | |
| { | |
| struct strbuf sb = STRBUF_INIT; | |
| struct pretty_print_context ctx = {0}; | |
| ctx.date_mode = DATE_NORMAL; | |
| format_commit_message(commit, " %m %s", &sb, &ctx); | |
| printf("%s\n", sb.buf); | |
| strbuf_release(&sb); | |
| } | |
| static int run_revision_walk(void) | |
| { | |
| struct rev_info rev; | |
| struct commit *commit; | |
| const char *argv[] = {NULL, "--all", NULL}; | |
| int argc = ARRAY_SIZE(argv) - 1; | |
| int got_revision = 0; | |
| init_revisions(&rev, NULL); | |
| setup_revisions(argc, argv, &rev, NULL); | |
| if (prepare_revision_walk(&rev)) | |
| die("revision walk setup failed"); | |
| while ((commit = get_revision(&rev)) != NULL) { | |
| print_commit(commit); | |
| got_revision = 1; | |
| } | |
| reset_revision_walk(); | |
| return got_revision; | |
| } | |
| int main(int argc, char **argv) | |
| { | |
| if (argc < 2) | |
| return 1; | |
| if (!strcmp(argv[1], "run-twice")) { | |
| printf("1st\n"); | |
| if (!run_revision_walk()) | |
| return 1; | |
| printf("2nd\n"); | |
| if (!run_revision_walk()) | |
| return 1; | |
| return 0; | |
| } | |
| fprintf(stderr, "check usage\n"); | |
| return 1; | |
| } |