diff -r 4b56219a5ac2 -r ccbaa2ed11a4 mercurial/context.py --- a/mercurial/context.py Mon Jan 05 16:52:12 2015 -0800 +++ b/mercurial/context.py Mon Jan 05 17:12:04 2015 -0800 @@ -140,16 +140,17 @@ deletedset = set(deleted) withflags = mf1.withflags() | mf2.withflags() for fn, mf2node in mf2.iteritems(): + if fn in deletedset: + continue if fn in mf1: - if (fn not in deletedset and - ((fn in withflags and mf1.flags(fn) != mf2.flags(fn)) or + if ((fn in withflags and mf1.flags(fn) != mf2.flags(fn)) or (mf1[fn] != mf2node and - (mf2node != _newnode or self[fn].cmp(other[fn]))))): + (mf2node != _newnode or self[fn].cmp(other[fn])))): modified.append(fn) elif listclean: clean.append(fn) del mf1[fn] - elif fn not in deletedset: + else: added.append(fn) removed = mf1.keys() if removed: