# HG changeset patch # User David Schleimer # Date 1360330567 28800 # 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 -r 8eb3408bf005 -r b946470efed9 mercurial/localrepo.py --- a/mercurial/localrepo.py Sun Feb 10 23:01:12 2013 +0000 +++ b/mercurial/localrepo.py Fri Feb 08 05:36:07 2013 -0800 @@ -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)