diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
index 4545c5b53013bff82ea62e7f5a4439883c264e3c_bWVyY3VyaWFsL2xvY2FscmVwby5weQ==..4f2a5c7cdf78ac2cc7e0d9f04c8018455e1d24cc_bWVyY3VyaWFsL2xvY2FscmVwby5weQ== 100644
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1392,7 +1392,7 @@
                 m = m1.copy()
 
                 # check in files
-                new = {}
+                added = []
                 changed = []
                 removed = list(ctx.removed())
                 linkrev = len(self)
@@ -1403,8 +1403,9 @@
                         if fctx is None:
                             removed.append(f)
                         else:
-                            new[f] = self._filecommit(fctx, m1, m2, linkrev,
-                                                      trp, changed)
+                            added.append(f)
+                            m[f] = self._filecommit(fctx, m1, m2, linkrev,
+                                                    trp, changed)
                             m.set(f, fctx.flags())
                     except OSError, inst:
                         self.ui.warn(_("trouble committing %s!\n") % f)
@@ -1416,10 +1417,9 @@
                         raise
 
                 # update manifest
-                m.update(new)
                 removed = [f for f in sorted(removed) if f in m1 or f in m2]
                 drop = [f for f in removed if f in m]
                 for f in drop:
                     del m[f]
                 mn = self.manifest.add(m, trp, linkrev,
                                        p1.manifestnode(), p2.manifestnode(),
@@ -1420,10 +1420,10 @@
                 removed = [f for f in sorted(removed) if f in m1 or f in m2]
                 drop = [f for f in removed if f in m]
                 for f in drop:
                     del m[f]
                 mn = self.manifest.add(m, trp, linkrev,
                                        p1.manifestnode(), p2.manifestnode(),
-                                       new, drop)
+                                       added, drop)
                 files = changed + removed
             else:
                 mn = p1.manifestnode()