diff -r e7587430ca23 -r 6877b0ee5f9d mercurial/merge.py --- a/mercurial/merge.py Mon Sep 21 10:23:25 2020 -0400 +++ b/mercurial/merge.py Wed Sep 09 16:49:19 2020 +0530 @@ -552,6 +552,7 @@ NO_OP_ACTIONS = ( mergestatemod.ACTION_KEEP, mergestatemod.ACTION_KEEP_ABSENT, + mergestatemod.ACTION_KEEP_NEW, ) def __init__(self): @@ -921,7 +922,7 @@ else: # file not in ancestor, not in remote mresult.addfile( f, - mergestatemod.ACTION_KEEP, + mergestatemod.ACTION_KEEP_NEW, None, b'ancestor missing, remote missing', ) @@ -1191,6 +1192,11 @@ repo.ui.note(_(b" %s: picking 'keep absent' action\n") % f) mresult.addfile(f, *bids[mergestatemod.ACTION_KEEP_ABSENT][0]) continue + # If keep new is an option, let's just do that + if mergestatemod.ACTION_KEEP_NEW in bids: + repo.ui.note(_(b" %s: picking 'keep new' action\n") % f) + mresult.addfile(f, *bids[mergestatemod.ACTION_KEEP_NEW][0]) + continue # If there are gets and they all agree [how could they not?], do it. if mergestatemod.ACTION_GET in bids: ga0 = bids[mergestatemod.ACTION_GET][0] @@ -1496,16 +1502,10 @@ progress.increment(item=f) # keep (noop, just log it) - for f, args, msg in mresult.getactions( - (mergestatemod.ACTION_KEEP,), sort=True - ): - repo.ui.debug(b" %s: %s -> k\n" % (f, msg)) - # no progress - for f, args, msg in mresult.getactions( - (mergestatemod.ACTION_KEEP_ABSENT,), sort=True - ): - repo.ui.debug(b" %s: %s -> ka\n" % (f, msg)) - # no progress + for a in mergeresult.NO_OP_ACTIONS: + for f, args, msg in mresult.getactions((a,), sort=True): + repo.ui.debug(b" %s: %s -> %s\n" % (f, msg, a)) + # no progress # directory rename, move local for f, args, msg in mresult.getactions(