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

Denis Laxalde denis.laxalde at logilab.fr
Mon Aug 21 06:55:56 EDT 2017


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?

> +
>   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