diff --git a/rev-list.c b/rev-list.c index fae30a2b68c98555bc8c2e5c9cea84c358ec8363..1a03bf7b3754e1644f9a2cee80d9d09b563ee1ec 100644 --- a/rev-list.c +++ b/rev-list.c @@ -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;