> -----Original Message-----
> From: Yuya Nishihara [mailto:you...@gmail.com] On Behalf Of Yuya
> Nishihara
> Sent: Saturday, 13 May, 2017 11:36
> To: Kostia Balytskyi <ikos...@fb.com>
> Cc: mercurial-devel@mercurial-scm.org
> Subject: Re: [PATCH 3 of 4 shelve-ext v5] shelve: refactor shelvestate loading
> 
> On Thu, 11 May 2017 14:43:26 -0700, Kostia Balytskyi wrote:
> > # HG changeset patch
> > # User Kostia Balytskyi <ikos...@fb.com> # Date 1494520029 25200
> > #      Thu May 11 09:27:09 2017 -0700
> > # Node ID 9170d8e0460bfe9ae4ea79394786cf2cac686fcb
> > # Parent  b79f27451d7af524c07b89a983cf750bd96292c5
> > shelve: refactor shelvestate loading
> 
> > +        # some basic syntactic verification and transformation
> > +        try:
> > +            d['version'] = int(d['version'])
> > +            if d['version'] != cls._version:
> > +                raise error.Abort(_('this version of shelve is 
> > incompatible '
> > +                                    'with the version used in this repo'))
> > +            d['originalwctx'] = nodemod.bin(d['originalwctx'])
> > +            d['pendingctx'] = nodemod.bin(d['pendingctx'])
> > +            d['parents'] = [nodemod.bin(h)
> > +                            for h in d['parents'].split(' ')]
> > +            d['nodestoremove'] = [nodemod.bin(h)
> > +                                  for h in d['nodestoremove'].split(' ')]
> > +        except (ValueError, TypeError, KeyError) as err:
> > +            raise error.CorruptedState(str(err))
> > +
> >          try:
> >              obj = cls()
> > -            obj.name = name
> > -            obj.wctx = repo[wctx]
> > -            obj.pendingctx = repo[pendingctx]
> > -            obj.parents = parents
> > -            obj.nodestoremove = nodestoremove
> > -            obj.branchtorestore = branchtorestore
> > -            obj.keep = keep
> > +            obj.name = d.get('name')
> 
> Still d.get() here seems not appropriate. Does the shelve work if state.name
> is None?
Will change.
> 
> > +            obj.wctx = repo[d.get('originalwctx')]
> > +            obj.pendingctx = repo[d.get('pendingctx')]
> > +            obj.parents = d.get('parents')
> > +            obj.nodestoremove = d.get('nodestoremove')
> > +            obj.branchtorestore = d.get('branchtorestore')
> > +            obj.keep = d.get('keep') == cls._keep
> >              obj.activebookmark = ''
> > -            if activebook != cls._noactivebook:
> > -                obj.activebookmark = activebook
> > +            if d.get('activebook', '') != cls._noactivebook:
> > +                obj.activebookmark = d.get('activebook')
> 
> Maybe obj.activebookmark = d.get('activebook', '') ?
We also need to be able to distinguish cases when d['acivebook'] == 
cls._noactivebook.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to