[PATCH 6 of 9 V3] template: compute user in obsfateusers

Boris Feld boris.feld at octobus.net
Mon Aug 21 09:05:26 EDT 2017


On Mon, 2017-08-21 at 12:55 +0200, Denis Laxalde wrote:
> Boris Feld a écrit :
> > # HG changeset patch
> > # User Boris Feld <boris.feld at octobus.net>
> > # Date 1499088840 -7200
> > #      Mon Jul 03 15:34:00 2017 +0200
> > # Node ID 2fee3b06f7b09f35dcfa312b645cf94090c11fb9
> > # Parent  66a2b0407c8cffedfae4897bd7a2f0e2d6a22363
> > # EXP-Topic obsfatetemplate
> > template: compute user in obsfateusers
> > 
> > Extract, deduplicate users informations from obs markers in order
> > to display
> > them.
> > 
> > Print all users for the moment, we might want to display users only
> > in verbose
> > mode later.
> > 
> > diff -r 66a2b0407c8c -r 2fee3b06f7b0 mercurial/obsutil.py
> > --- a/mercurial/obsutil.py	Mon Jul 03 15:33:27 2017 +0200
> > +++ b/mercurial/obsutil.py	Mon Jul 03 15:34:00 2017 +0200
> > @@ -579,6 +579,18 @@
> >           verb = 'split'
> >       return {'verb': verb}
> >   
> > +def _successorsetusers(successorset, markers):
> > +    """ Returns a sorted list of markers users without duplicates
> > +    """
> > +    if not markers:
> > +        return {}
> > +
> > +    # Check that user is present in meta
> > +    markersmeta = [dict(m[3]) for m in markers]
> > +    users = set(meta.get('user') for meta in markersmeta if
> > meta.get('user'))
> > +
> > +    return {'users': sorted(users)}
> 
> "users" set might be empty, do we want an empty dict instead in this
> case?

I think we want to distinguish the case where we don't have any marker
(empty dict) from the case markers are missing users information (empty
'users' list) which shouldn't be frequent.

We could also returns directly the users, the dict is an artifact of
the previous version of this series.

> 
> > +
> >   def successorsandmarkers(repo, ctx):
> >       """compute the raw data needed for computing obsfate
> >       Returns a list of dict, one dict per successors set
> > diff -r 66a2b0407c8c -r 2fee3b06f7b0 mercurial/templater.py
> > --- a/mercurial/templater.py	Mon Jul 03 15:33:27 2017 +0200
> > +++ b/mercurial/templater.py	Mon Jul 03 15:34:00 2017 +0200
> > @@ -859,6 +859,24 @@
> >   
> >       return obsutil._successorsetverb(successors, markers)['verb']
> >   
> > + at templatefunc('obsfateusers(successors, markers)')
> > +def obsfateusers(context, mapping, args):
> > +    """ Compute obsfate related information based on successors
> > and markers
> > +    """
> > +    successors = evalfuncarg(context, mapping, args[0])
> > +    markers = evalfuncarg(context, mapping, args[1])
> > +    data = obsutil._successorsetusers(successors, markers)
> > +
> > +    _hybrid = templatekw._hybrid
> > +
> > +    def makemap(x):
> > +        return x
> > +
> > +    def joinfmt(d):
> > +        return d
> > +
> > +    return _hybrid(None, [data], makemap, joinfmt)
> > +
> >   @templatefunc('relpath(path)')
> >   def relpath(context, mapping, args):
> >       """Convert a repository-absolute path into a filesystem path
> > relative to


More information about the Mercurial-devel mailing list