graph: output padding for merge subsequent parents
When showing merges in git-log, the same commit is shown once for each parent. Combined with "--graph" this results in graph_show_commit() being called once for each parent without graph_update() being called. Currently graph_show_commit() does not print anything on subsequent invocations for the same commit (this was changed by commit 656197a - "graph.c: infinite loop in git whatchanged --graph -m" from the previous behaviour of looping infinitely). Change this so that if the graph code believes it has already shown the commit it prints a single padding line. Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
John Keeping committed
Feb 7, 2013 at 20:15 UTC
a48ec2415882ae15b8593185d6f9ab2f69555a9d
1 file changed
+10
graph.c
+10
@@ -1227,6 +1227,16 @@ void graph_show_commit(struct git_graph *graph)
1227
if (!graph)
1228
return;
1229
1230
+ /*
1231
+ * When showing a diff of a merge against each of its parents, we
1232
+ * are called once for each parent without graph_update having been
1233
+ * called. In this case, simply output a single padding line.
1234
+ */
1235
+ if (graph_is_commit_finished(graph)) {
1236
+ graph_show_padding(graph);
1237
+ shown_commit_line = 1;
1238
+ }
1239
+
1240
while (!shown_commit_line && !graph_is_commit_finished(graph)) {
1241
shown_commit_line = graph_next_line(graph, &msgbuf);
1242
fwrite(msgbuf.buf, sizeof(char), msgbuf.len, stdout);