If we do it after the revision traversal we can be sure that this is indeed a commit that will be processed (i.e. not a merge) and it's the top most one (thus removing the NEEDSWORK comment). Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> --- builtin/log.c | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/builtin/log.c b/builtin/log.c index 8f0b2e8..6c78d7f 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -1319,24 +1319,6 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) rev.show_root_diff = 1; if (cover_letter) { - /* - * NEEDSWORK:randomly pick one positive commit to show - * diffstat; this is often the tip and the command - * happens to do the right thing in most cases, but a - * complex command like "--cover-letter a b c ^bottom" - * picks "c" and shows diffstat between bottom..c - * which may not match what the series represents at - * all and totally broken. - */ - int i; - for (i = 0; i < rev.pending.nr; i++) { - struct object *o = rev.pending.objects[i].item; - if (!(o->flags & UNINTERESTING)) - head = (struct commit *)o; - } - /* There is nothing to show; it is not an error, though. */ - if (!head) - return 0; if (!branch_name) branch_name = find_branch_name(&rev); } @@ -1372,6 +1354,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) list = xrealloc(list, nr * sizeof(list[0])); list[nr - 1] = commit; } + if (nr > 0) + head = list[0]; total = nr; if (!keep_subject && auto_number && total > 1) numbered = 1; -- 1.8.2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html