reduce_heads() can filter "duplicated" parents, where "duplicated" means: A is duplicated if both A and B are parent candidates and A is reachable from B. Doing so in builtin-merge makes sense, but not in builtin-commit, because this breaks git merge --no-commit --no-ff. Test case by SZEDER Gabor <szeder@xxxxxxxxxx> --- Here is a patch that fixes the problem for me. In fact I think it would be nice if somehow git-merge could tell git-commit that 'do not reduce heads now' and in other cases it could still do so, but: 1) This is not something git-commit did in the past, either. 2) I have no idea what would be the right interface to do so (maybe a new MERGE_FOO file under .git?) builtin-commit.c | 1 - t/t7600-merge.sh | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletions(-) diff --git a/builtin-commit.c b/builtin-commit.c index 55e1087..9daab0a 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -988,7 +988,6 @@ int cmd_commit(int argc, const char **argv, const char *prefix) reflog_msg = "commit"; pptr = &commit_list_insert(lookup_commit(head_sha1), pptr)->next; } - parents = reduce_heads(parents); /* Finally, get the commit message */ strbuf_init(&sb, 0); diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh index 9516f54..98cfc53 100755 --- a/t/t7600-merge.sh +++ b/t/t7600-merge.sh @@ -511,4 +511,13 @@ test_expect_success 'in-index merge' ' test_debug 'gitk --all' +test_expect_success 'merge --no-ff --no-commit && commit' ' + git reset --hard c0 && + git merge --no-ff --no-commit c1 && + EDITOR=: git commit && + verify_parents $c0 $c1 +' + +test_debug 'gitk --all' + test_done -- 1.6.0.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