commit: factor out post-commit cleanup into workingctx
This pulls some of the logic for the cleanup that needs to happen
after a commit has been made otu of localrepo.commit and into
workingctx. This is part of a larger refactoring effort that will
eventually allow us to perform some types of merges in-memory.
--- a/mercurial/context.py Fri Feb 08 05:36:08 2013 -0800
+++ b/mercurial/context.py Fri Feb 08 05:36:08 2013 -0800
@@ -1138,6 +1138,22 @@
finally:
wlock.release()
+ def markcommitted(self, node):
+ """Perform post-commit cleanup necessary after commiting this workingctx
+
+ Specifically, this updates backing stores this working context
+ wraps to reflect the fact that the changes reflected by this
+ workingctx have been committed. For example, it marks
+ modified and added files as normal in the dirstate.
+
+ """
+
+ for f in self.modified() + self.added():
+ self._repo.dirstate.normal(f)
+ for f in self.removed():
+ self._repo.dirstate.drop(f)
+ self._repo.dirstate.setparents(node)
+
def dirs(self):
return set(self._repo.dirstate.dirs())
--- a/mercurial/localrepo.py Fri Feb 08 05:36:08 2013 -0800
+++ b/mercurial/localrepo.py Fri Feb 08 05:36:08 2013 -0800
@@ -1279,11 +1279,7 @@
# update bookmarks, dirstate and mergestate
bookmarks.update(self, [p1, p2], ret)
- for f in changes[0] + changes[1]:
- self.dirstate.normal(f)
- for f in changes[2]:
- self.dirstate.drop(f)
- self.dirstate.setparents(ret)
+ cctx.markcommitted(ret)
ms.reset()
finally:
wlock.release()