# HG changeset patch # User David Schleimer # Date 2013-02-08 13:36:07 # Node ID b946470efed9edb076a1df4286173925f65d9f4c # Parent 8eb3408bf0051615106ca21d33519ad0131b8f60 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 @@ class localrepository(object): 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 @@ class localrepository(object): 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)