[PATCH 4 of 4 V3] dirstate: add exception when calling setparent without begin/end

Augie Fackler 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
> >>called
> >> dirstate.beginparentchange. This will prevent people from writing code
> >>that
> >> 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[1]
> >>          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 mailing list