--- a/mercurial/merge.py Wed Apr 10 12:31:07 2013 -0700
+++ b/mercurial/merge.py Wed Apr 10 12:34:42 2013 -0700
@@ -246,7 +246,13 @@
if n12:
n1, n2 = n12
else: # file contents didn't change, but flags did
- n1 = n2 = m1[f]
+ n1 = n2 = m1.get(f, None)
+ if n1 is None:
+ # Since n1 == n2, the file isn't present in m2 either. This
+ # means that the file was removed or deleted locally and
+ # removed remotely, but that residual entries remain in flags.
+ # This can happen in manifests generated by workingctx.
+ continue
if fl12:
fl1, fl2 = fl12
else: # flags didn't change, file contents did