[PATCH 01 of 19] localrepo: create context used for actual commit earlier

David Schleimer dschleimer at fb.com
Sun Feb 10 17:29:51 CST 2013


# HG changeset patch
# User David Schleimer <dschleimer at fb.com>
# Date 1360330567 28800
# Node ID 07bdd03d86dcce1558d793c29c062e05e5cf02da
# Parent  cd01b0fef1b0bae101c66c8acd9ba7c013548390
localrepo: create context used for actual commit earlier

localrepo.commit creates a workingctx, calls self.status, does some
munging on the changes status returns, does some validation on those
changes, and then creates a new workingctx from the changes.  This
moves the creation of the new workginctx ahead of some validation,
with the intention of refactoring some of that validation logic into
the workingctx, so that it can be reused elsewhere.

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1230,6 +1230,8 @@
                     elif f not in self.dirstate:
                         fail(f, _("file not tracked!"))
 
+            cctx = context.workingctx(self, text, user, date, extra, changes)
+
             if (not force and not extra.get("close") and not merge
                 and not (changes[0] or changes[1] or changes[2])
                 and wctx.branch() == wctx.p1().branch()):
@@ -1244,7 +1246,6 @@
                     raise util.Abort(_("unresolved merge conflicts "
                                        "(see hg help resolve)"))
 
-            cctx = context.workingctx(self, text, user, date, extra, changes)
             if editor:
                 cctx._text = editor(self, cctx, subs)
             edited = (text != cctx._text)


More information about the Mercurial-devel mailing list