[PATCH] add *--no-merges* flag to suppress display of merge commits
[git.git] / rev-list.c
index fae30a2..1a03bf7 100644 (file)
@@ -15,12 +15,15 @@ static const char rev_list_usage[] =
                      "  --max-count=nr\n"
                      "  --max-age=epoch\n"
                      "  --min-age=epoch\n"
+                     "  --parents\n"
                      "  --bisect\n"
                      "  --objects\n"
                      "  --unpacked\n"
                      "  --header\n"
                      "  --pretty\n"
-                     "  --merge-order [ --show-breaks ]";
+                     "  --no-merges\n"
+                     "  --merge-order [ --show-breaks ]\n"
+                     "  --topo-order";
 
 static int unpacked = 0;
 static int bisect_list = 0;
@@ -39,6 +42,7 @@ static int merge_order = 0;
 static int show_breaks = 0;
 static int stop_traversal = 0;
 static int topo_order = 0;
+static int no_merges = 0;
 
 static void show_commit(struct commit *commit)
 {
@@ -82,6 +86,8 @@ static int filter_commit(struct commit * commit)
        }
        if (max_count != -1 && !max_count--)
                return STOP;
+       if (no_merges && (commit->parents && commit->parents->next))
+               return CONTINUE;
        return DO;
 }
 
@@ -500,6 +506,10 @@ int main(int argc, char **argv)
                        prefix = "commit ";
                        continue;
                }
+               if (!strncmp(arg, "--no-merges", 11)) {
+                       no_merges = 1;
+                       continue;
+               }
                if (!strcmp(arg, "--parents")) {
                        show_parents = 1;
                        continue;