[PATCH] mailinfo: reset CTE after each multipart
[git.git] / rev-list.c
index 1bc1887..a554e07 100644 (file)
@@ -12,6 +12,7 @@
 #define COUNTED                (1u << 2)
 #define SHOWN          (1u << 3)
 #define TREECHANGE     (1u << 4)
+#define TMP_MARK       (1u << 5) /* for isolated cases; clean after use */
 
 static const char rev_list_usage[] =
 "git-rev-list [OPTION] <commit-id>... [ -- paths... ]\n"
@@ -72,9 +73,21 @@ static void show_commit(struct commit *commit)
        if (show_parents) {
                struct commit_list *parents = commit->parents;
                while (parents) {
-                       printf(" %s", sha1_to_hex(parents->item->object.sha1));
+                       struct object *o = &(parents->item->object);
                        parents = parents->next;
+                       if (o->flags & TMP_MARK)
+                               continue;
+                       printf(" %s", sha1_to_hex(o->sha1));
+                       o->flags |= TMP_MARK;
                }
+               /* TMP_MARK is a general purpose flag that can
+                * be used locally, but the user should clean
+                * things up after it is done with them.
+                */
+               for (parents = commit->parents;
+                    parents;
+                    parents = parents->next)
+                       parents->item->object.flags &= ~TMP_MARK;
        }
        if (commit_format == CMIT_FMT_ONELINE)
                putchar(' ');