Junio C Hamano <gitster@xxxxxxxxx> wrote: > * lt/octopus-simplify (2012-04-12) 1 commit > - Make 'git merge' simplify parents earlier > > Octopus merge strategy did not reduce heads that are recorded in the > final commit. This was done off-list. Heh, this seems to fix the issue I reported in [1], except... it doesn't work for the testcase I posted :). The problem is that this commit makes Git 'fast-forward' to the first commit from remoteheads, not from the reduced heads. See: $ git init /tmp/merge Initialized empty Git repository in /tmp/merge/.git/ $ cd /tmp/merge $ echo a>>a && git add a && git commit -m first [master (root-commit) 7422615] first 1 file changed, 1 insertion(+) create mode 100644 a $ echo a>>a && git add a && git commit -m second [master 0ba02e5] second 1 file changed, 1 insertion(+) $ echo a>>a && git add a && git commit -m third [master 9bd11ac] third 1 file changed, 1 insertion(+) $ git checkout master~2 HEAD is now at 7422615... first # This is OK: $ git merge master master~1 Updating 7422615..9bd11ac Fast-forward a | 2 ++ 1 file changed, 2 insertions(+) $ git checkout master~2 Previous HEAD position was 9bd11ac... third HEAD is now at 7422615... first # This is not OK: $ git merge master~1 master Updating 7422615..0ba02e5 Fast-forward a | 1 + 1 file changed, 1 insertion(+) Ths following patch fixes that. [1] http://permalink.gmane.org/gmane.comp.version-control.git/190625 Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@xxxxxxxxx> (if this fix need a signed-off) --- diff --git a/builtin/merge.c b/builtin/merge.c index f5947b9..075c99b 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1388,13 +1388,13 @@ int cmd_merge(int argc, const char **argv, const char *prefix) if (verbosity >= 0) printf(_("Updating %s..%s\n"), hex, - find_unique_abbrev(remoteheads->item->object.sha1, + find_unique_abbrev(parents->item->object.sha1, DEFAULT_ABBREV)); strbuf_addstr(&msg, "Fast-forward"); if (have_message) strbuf_addstr(&msg, " (no commit created; -m option ignored)"); - commit = remoteheads->item; + commit = parents->item; if (!commit) { ret = 1; goto done; -- 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