[PATCH 4 of 4 V3] dirstate: add exception when calling setparent without begin/end
Durham Goode
durham at fb.com
Wed Sep 10 19:23:18 UTC 2014
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.
>
>> +
>> 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