diff -r 94317c2d53b8 -r cf25e4efd685 mercurial/merge.py --- a/mercurial/merge.py Sat Feb 02 15:37:17 2013 -0200 +++ b/mercurial/merge.py Thu Jan 24 23:57:44 2013 +0100 @@ -227,6 +227,7 @@ m1['.hgsubstate'] += "+" break + prompts = [] # Compare manifests visit = m1.iteritems() if repo.ui.debugflag: @@ -265,13 +266,7 @@ act("local copied/moved to " + f2, "m", f, f2, f, False) elif f in ma: # clean, a different, no remote if n != ma[f]: - if repo.ui.promptchoice( - _(" local changed %s which remote deleted\n" - "use (c)hanged version or (d)elete?") % f, - (_("&Changed"), _("&Delete")), 0): - act("prompt delete", "r", f) - else: - act("prompt keep", "a", f) + prompts.append((f, "cd")) # prompt changed/deleted elif n[20:] == "a": # added, no remote act("remote deleted", "f", f) else: @@ -305,12 +300,24 @@ else: act("remote created", "g", f, m2.flags(f)) elif n != ma[f]: + prompts.append((f, "dc")) # prompt deleted/changed + + for f, m in sorted(prompts): + if m == "cd": + if repo.ui.promptchoice( + _(" local changed %s which remote deleted\n" + "use (c)hanged version or (d)elete?") % f, + (_("&Changed"), _("&Delete")), 0): + act("prompt delete", "r", f) + else: + act("prompt keep", "a", f) + elif m == "dc": if repo.ui.promptchoice( _("remote changed %s which local deleted\n" "use (c)hanged version or leave (d)eleted?") % f, (_("&Changed"), _("&Deleted")), 0) == 0: act("prompt recreating", "g", f, m2.flags(f)) - + else: assert False, m return actions def actionkey(a):