+ " --header\n"
+ " --pretty";
+
+static int verbose_header = 0;
+static int show_parents = 0;
+static int pretty_print = 0;
+static int hdr_termination = 0;
+static const char *prefix = "";
+static unsigned long max_age = -1;
+static unsigned long min_age = -1;
+static int max_count = -1;
+
+static void show_commit(struct commit *commit)
+{
+ printf("%s%s", prefix, 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) {
+ const char *buf = commit->buffer;
+ if (pretty_print) {
+ static char pretty_header[16384];
+ pretty_print_commit(commit->buffer, ~0, pretty_header, sizeof(pretty_header));
+ buf = pretty_header;
+ }
+ printf("%s%c", buf, hdr_termination);
+ }
+}
+
+static void show_commit_list(struct commit_list *list)
+{
+ while (list) {
+ struct commit *commit = pop_most_recent_commit(&list, SEEN);
+
+ if (commit->object.flags & UNINTERESTING)
+ continue;
+ if (min_age != -1 && (commit->date > min_age))
+ continue;
+ if (max_age != -1 && (commit->date < max_age))
+ break;
+ if (max_count != -1 && !max_count--)
+ break;
+ show_commit(commit);
+ }
+}