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

Boris Feld boris.feld at octobus.net
Wed Aug 23 11:18:40 EDT 2017


# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1499088840 -7200
#      Mon Jul 03 15:34:00 2017 +0200
# Node ID fc257b24c35c492591f348b039d9e3f9488118a8
# Parent  8c1da4748240142e1ee62521279cf8556192c79e
# 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 8c1da4748240 -r fc257b24c35c 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,14 @@
         verb = 'split'
     return verb
 
+def _markersusers(markers):
+    """ Returns a sorted list of markers users without duplicates
+    """
+    markersmeta = [dict(m[3]) for m in markers]
+    users = set(meta.get('user') for meta in markersmeta if meta.get('user'))
+
+    return sorted(users)
+
 def successorsandmarkers(repo, ctx):
     """compute the raw data needed for computing obsfate
     Returns a list of dict, one dict per successors set
diff -r 8c1da4748240 -r fc257b24c35c 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
@@ -7,10 +7,10 @@
 
 from __future__ import absolute_import
 
+import collections
 import os
 import re
 import types
-import collections
 
 from .i18n import _
 from . import (
@@ -869,6 +869,25 @@
 
     return obsutil._successorsetverb(successors)
 
+ at templatefunc('obsfateusers(markers)')
+def obsfateusers(context, mapping, args):
+    """ Compute obsfate related information based on markers
+
+    (EXPERIMENTAL)
+    """
+    if not len(args) == 1:
+        # i18n: "obsfateusers" is a keyword
+        raise error.ParseError(_("obsfateusers expects two arguments"))
+
+    markers = evalfuncarg(context, mapping, args[0])
+    if not isinstance(markers, collections.Iterable):
+        # i18n: "obsfateusers" is a keyword
+        errmsg = "obsfateusers first argument should be an iterable"
+        raise error.ParseError(errmsg)
+
+    data = obsutil._markersusers(markers)
+    return templatekw._hybrid(None, data, lambda x: x, lambda d: d)
+
 @templatefunc('relpath(path)')
 def relpath(context, mapping, args):
     """Convert a repository-absolute path into a filesystem path relative to
diff -r 8c1da4748240 -r fc257b24c35c tests/test-obsmarker-template.t
--- a/tests/test-obsmarker-template.t	Mon Jul 03 15:33:27 2017 +0200
+++ b/tests/test-obsmarker-template.t	Mon Jul 03 15:34:00 2017 +0200
@@ -14,7 +14,8 @@
   > [templates]
   > obsfatesuccessors = " as {join(successors, ", ")}"
   > obsfateverb = "{obsfateverb(successors)}"
-  > obsfate = "{obsfateverb}{obsfatesuccessors}; "
+  > obsfateusers = "{if(obsfateusers(markers), " by {join(obsfateusers(markers), ", ")}")}"
+  > obsfate = "{obsfateverb}{obsfatesuccessors}{obsfateusers}; "
   > [alias]
   > tlog = log -G -T '{node|short}\
   >     {if(predecessors, "\n  Predecessors: {predecessors}")}\
@@ -93,21 +94,21 @@
   o  d004c8f274b9
   |
   | @  471f378eab4c
-  |/     Obsfate: rewritten as 4:d004c8f274b9;
+  |/     Obsfate: rewritten as 4:d004c8f274b9 by test1, test2;
   o  ea207398892e
   
   $ hg fatelog
   o  d004c8f274b9
   |
   | @  471f378eab4c
-  |/     Obsfate: rewritten as 4:d004c8f274b9;
+  |/     Obsfate: rewritten as 4:d004c8f274b9 by test1, test2;
   o  ea207398892e
   
   $ hg fatelog -v
   o  d004c8f274b9
   |
   | @  471f378eab4c
-  |/     Obsfate: rewritten as 4:d004c8f274b9;
+  |/     Obsfate: rewritten as 4:d004c8f274b9 by test1, test2;
   o  ea207398892e
   
   $ hg up 'desc(A1)' --hidden
@@ -130,7 +131,7 @@
   o  d004c8f274b9
   |
   | @  a468dc9b3633
-  |/     Obsfate: rewritten as 4:d004c8f274b9;
+  |/     Obsfate: rewritten as 4:d004c8f274b9 by test2;
   o  ea207398892e
   
 Predecessors template should show all the predecessors as we force their display
@@ -161,11 +162,11 @@
   o  d004c8f274b9
   |
   | @  a468dc9b3633
-  |/     Obsfate: rewritten as 4:d004c8f274b9;
+  |/     Obsfate: rewritten as 4:d004c8f274b9 by test2;
   | x  f137d23bb3e1
   | |
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 3:a468dc9b3633;
+  |/     Obsfate: rewritten as 3:a468dc9b3633 by test1;
   o  ea207398892e
   
 
@@ -210,14 +211,13 @@
   @  d004c8f274b9
   |
   | x  a468dc9b3633
-  |/     Obsfate: rewritten as 4:d004c8f274b9;
+  |/     Obsfate: rewritten as 4:d004c8f274b9 by test2;
   | x  f137d23bb3e1
   | |
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 3:a468dc9b3633;
+  |/     Obsfate: rewritten as 3:a468dc9b3633 by test1;
   o  ea207398892e
   
-
   $ hg fatelogjson --hidden
   @  d004c8f274b9
   |
@@ -319,7 +319,7 @@
   o  337fec4d2edc
   |
   | @  471597cad322
-  |/     Obsfate: split as 2:337fec4d2edc, 3:f257fde29c7a;
+  |/     Obsfate: split as 2:337fec4d2edc, 3:f257fde29c7a by test;
   o  ea207398892e
   
   $ hg up f257fde29c7a
@@ -360,7 +360,7 @@
   o  337fec4d2edc
   |
   | x  471597cad322
-  |/     Obsfate: split as 2:337fec4d2edc, 3:f257fde29c7a;
+  |/     Obsfate: split as 2:337fec4d2edc, 3:f257fde29c7a by test;
   o  ea207398892e
   
   $ hg fatelogjson --hidden
@@ -461,7 +461,7 @@
   o  eb5a0daa2192
   |
   | @  471f378eab4c
-  |/     Obsfate: rewritten as 3:eb5a0daa2192;
+  |/     Obsfate: rewritten as 3:eb5a0daa2192 by test;
   o  ea207398892e
   
   $ hg up 'desc(B0)' --hidden
@@ -490,9 +490,9 @@
   o  eb5a0daa2192
   |
   | @  0dec01379d3b
-  | |    Obsfate: rewritten as 3:eb5a0daa2192;
+  | |    Obsfate: rewritten as 3:eb5a0daa2192 by test;
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 3:eb5a0daa2192;
+  |/     Obsfate: rewritten as 3:eb5a0daa2192 by test;
   o  ea207398892e
   
   $ hg up 'desc(C0)'
@@ -528,9 +528,9 @@
   @  eb5a0daa2192
   |
   | x  0dec01379d3b
-  | |    Obsfate: rewritten as 3:eb5a0daa2192;
+  | |    Obsfate: rewritten as 3:eb5a0daa2192 by test;
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 3:eb5a0daa2192;
+  |/     Obsfate: rewritten as 3:eb5a0daa2192 by test;
   o  ea207398892e
   
 
@@ -667,7 +667,7 @@
   | o  fdf9bde5129a
   |/
   | @  471f378eab4c
-  |/     Obsfate: rewritten as 2:fdf9bde5129a; rewritten as 4:019fadeab383;
+  |/     Obsfate: rewritten as 2:fdf9bde5129a by test; rewritten as 4:019fadeab383 by test;
   o  ea207398892e
   
   $ hg up 'desc(A1)'
@@ -723,11 +723,11 @@
   o  019fadeab383
   |
   | x  65b757b745b9
-  |/     Obsfate: rewritten as 4:019fadeab383;
+  |/     Obsfate: rewritten as 4:019fadeab383 by test;
   | @  fdf9bde5129a
   |/
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 2:fdf9bde5129a; rewritten as 3:65b757b745b9;
+  |/     Obsfate: rewritten as 2:fdf9bde5129a by test; rewritten as 3:65b757b745b9 by test;
   o  ea207398892e
   
 
@@ -845,7 +845,7 @@
   o  eb5a0daa2192
   |
   | @  471f378eab4c
-  |/     Obsfate: rewritten as 4:eb5a0daa2192;
+  |/     Obsfate: rewritten as 4:eb5a0daa2192 by test;
   o  ea207398892e
   
   $ hg up 'desc(B0)' --hidden
@@ -873,9 +873,9 @@
   o  eb5a0daa2192
   |
   | @  0dec01379d3b
-  | |    Obsfate: rewritten as 4:eb5a0daa2192;
+  | |    Obsfate: rewritten as 4:eb5a0daa2192 by test;
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 4:eb5a0daa2192;
+  |/     Obsfate: rewritten as 4:eb5a0daa2192 by test;
   o  ea207398892e
   
   $ hg up 'desc(B1)' --hidden
@@ -903,9 +903,9 @@
   o  eb5a0daa2192
   |
   | @  b7ea6d14e664
-  | |    Obsfate: rewritten as 4:eb5a0daa2192;
+  | |    Obsfate: rewritten as 4:eb5a0daa2192 by test;
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 4:eb5a0daa2192;
+  |/     Obsfate: rewritten as 4:eb5a0daa2192 by test;
   o  ea207398892e
   
   $ hg up 'desc(C0)'
@@ -954,11 +954,11 @@
   @  eb5a0daa2192
   |
   | x  b7ea6d14e664
-  | |    Obsfate: rewritten as 4:eb5a0daa2192;
+  | |    Obsfate: rewritten as 4:eb5a0daa2192 by test;
   | | x  0dec01379d3b
-  | |/     Obsfate: rewritten as 3:b7ea6d14e664;
+  | |/     Obsfate: rewritten as 3:b7ea6d14e664 by test;
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 4:eb5a0daa2192;
+  |/     Obsfate: rewritten as 4:eb5a0daa2192 by test;
   o  ea207398892e
   
 
@@ -1082,7 +1082,7 @@
   o  7a230b46bf61
   |
   | @  471f378eab4c
-  |/     Obsfate: rewritten as 2:7a230b46bf61;
+  |/     Obsfate: rewritten as 2:7a230b46bf61 by test;
   o  ea207398892e
   
   $ hg up 'desc(A2)'
@@ -1119,7 +1119,7 @@
   @  7a230b46bf61
   |
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 2:7a230b46bf61;
+  |/     Obsfate: rewritten as 2:7a230b46bf61 by test;
   o  ea207398892e
   
 
@@ -1194,9 +1194,9 @@
   o  f897c6137566
   |
   | @  0dec01379d3b
-  | |    Obsfate: rewritten as 3:f897c6137566; rewritten as 1:471f378eab4c;
+  | |    Obsfate: rewritten as 3:f897c6137566 by test; rewritten as 1:471f378eab4c by test;
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 2:0dec01379d3b;
+  |/     Obsfate: rewritten as 2:0dec01379d3b by test;
   o  ea207398892e
   
 
@@ -1452,7 +1452,7 @@
   | o  ba2ed02b0c9a
   | |
   | x  4a004186e638
-  |/     Obsfate: rewritten as 8:b18bc8331526; rewritten as 9:0b997eb7ceee;
+  |/     Obsfate: rewritten as 8:b18bc8331526 by test; rewritten as 9:0b997eb7ceee by test;
   o  dd800401bd8c
   |
   o  f897c6137566
@@ -1525,17 +1525,17 @@
   | o  ba2ed02b0c9a
   | |
   | x  4a004186e638
-  |/     Obsfate: rewritten as 8:b18bc8331526; rewritten as 9:0b997eb7ceee;
+  |/     Obsfate: rewritten as 8:b18bc8331526 by test; rewritten as 9:0b997eb7ceee by test;
   o  dd800401bd8c
   |
   | x  9bd10a0775e4
-  |/     Obsfate: split as 5:dd800401bd8c, 6:4a004186e638, 7:ba2ed02b0c9a;
+  |/     Obsfate: split as 5:dd800401bd8c, 6:4a004186e638, 7:ba2ed02b0c9a by test;
   o  f897c6137566
   |
   | x  0dec01379d3b
-  | |    Obsfate: rewritten as 3:f897c6137566; rewritten as 1:471f378eab4c;
+  | |    Obsfate: rewritten as 3:f897c6137566 by test; rewritten as 1:471f378eab4c by test;
   | x  471f378eab4c
-  |/     Obsfate: rewritten as 2:0dec01379d3b;
+  |/     Obsfate: rewritten as 2:0dec01379d3b by test;
   o  ea207398892e
   
   $ hg fatelogjson --hidden
@@ -1604,7 +1604,7 @@
   o  dd800401bd8c
   |
   | @  9bd10a0775e4
-  |/     Obsfate: split as 5:dd800401bd8c, 9:0b997eb7ceee, 10:eceed8f98ffc; split as 5:dd800401bd8c, 8:b18bc8331526, 10:eceed8f98ffc;
+  |/     Obsfate: split as 5:dd800401bd8c, 9:0b997eb7ceee, 10:eceed8f98ffc by test; split as 5:dd800401bd8c, 8:b18bc8331526, 10:eceed8f98ffc by test;
   o  f897c6137566
   |
   o  ea207398892e


More information about the Mercurial-devel mailing list