Re: git-rebase -i prunes commits with empty commit-message
From: Erik Faye-Lund <hidden>
Date: 2016-06-15 22:48:25
Subsystem:
the rest · Maintainer:
Linus Torvalds
On Wed, Mar 10, 2010 at 2:34 PM, Erik Faye-Lund [off-list ref] wrote:
But to be honest, it seems to me like in this precise instance it's probably better to just fix git-rebase--interactive.sh. There's no good reason for it to barf on the commits -- especially since noon-interactive rebase handles them just fine. Unless someone screams out loud, I might take a stab at it when I get time.
I think I've found the culprit: git-rev-list doesn't append a newline-separator after commits with empty messages. git-rebase--interactive.sh basically eats git rev-list's output line by line, prepending "pick ". This seems to have been introduced in 55246aa "Don't use "<unknown>" for placeholders and suppress printing of empty user formats." by Michal Vitecek. It seems he intended to fix a rev-list with --pretty=format:"" or something like that, but I can't get custom formats to work at all with rev-list, even if the documentation says it should. Anyway, the following patch seems to fix the problem for me, but I'm not very confident that it doesn't break whatever Michal was trying to address. --->8---
diff --git a/builtin-rev-list.c b/builtin-rev-list.c
index 5679170..b13e1ba 100644
--- a/builtin-rev-list.c
+++ b/builtin-rev-list.c@@ -134,10 +134,8 @@ static void show_commit(struct commit *commit, void *data) if (graph_show_remainder(revs->graph)) putchar('\n'); } - } else { - if (buf.len) - printf("%s%c", buf.buf, info->hdr_termination); - } + } else + printf("%s%c", buf.buf, info->hdr_termination); strbuf_release(&buf); } else { if (graph_show_remainder(revs->graph)) --->8---
--
Erik "kusma" Faye-Lund