[PATCH 4 of 4 V3] dirstate: add exception when calling setparent without begin/end
raf at durin42.com
Wed Sep 10 14:25:46 CDT 2014
On Wed, Sep 10, 2014 at 07:23:18PM +0000, Durham Goode wrote:
> On 9/10/14, 7:15 PM, "Augie Fackler" <raf at durin42.com> wrote:
> >On Tue, Sep 09, 2014 at 01:21:30PM -0700, Durham Goode wrote:
> >> # HG changeset patch
> >> # User Durham Goode <durham at fb.com>
> >> # Date 1409942264 25200
> >> # Fri Sep 05 11:37:44 2014 -0700
> >> # Node ID 2328d9edda009ab9ae9da8156d96763ff1ef76fc
> >> # Parent af3352972f8fddfb0c5b755e6ceb2470a31e6f7c
> >> dirstate: add exception when calling setparent without begin/end
> >> Adds an exception when calling dirstate.setparent without having first
> >> dirstate.beginparentchange. This will prevent people from writing code
> >> modifies the dirstate parent without considering the transactionality
> >>of their
> >> change.
> >> This will break third party extensions that call setparents.
> >> diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
> >> --- a/mercurial/dirstate.py
> >> +++ b/mercurial/dirstate.py
> >> @@ -256,6 +256,10 @@
> >> See localrepo.setparents()
> >> """
> >> + if self._parentwriters == 0:
> >> + raise util.Abort(_("cannot set dirstate parent without " +
> >> + " calling dirstate.begingparentchange"))
> >Hm. Can we make this some non-Abort exception? This is really
> >something that should never happen, and a stacktrace seems warranted
> >(the message here strikes me as something that'd only confuse users
> >anyway). Maybe ValueError for now? Do you mind if I make that change?
> Yea, it’s definitely only there for developers. You can change it.
Excellent. Queued with ValueError instead of Abort. Thanks!
> >> +
> >> self._dirty = self._dirtypl = True
> >> oldp2 = self._pl
> >> self._pl = p1, p2
> >> _______________________________________________
> >> Mercurial-devel mailing list
> >> Mercurial-devel at selenic.com
> >> http://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel