# HG changeset patch # User Boris Feld <boris.f...@octobus.net> # Date 1501850856 -7200 # Fri Aug 04 14:47:36 2017 +0200 # Node ID a96edc5bcdc8790719e003eefff91a4f656cc559 # Parent e3f0339b83553039dcd87b62dc1dfbdf98548792 # EXP-Topic obsfatetemplate template: add minimal obsfate template function
The goal of this series is to have templates capable of displaying the evolution of each changeset in a clean and human-readable way. Add the succsandmarkers template return successors and markers so it can be used isolated like: > {succsandmarkers % "{get(succsandmarkers, "markers")|json};"} Also add a template function obsfate that takes succsandmarkers as input and compute various fields from the list of markers and successors. Additional fields will be added in following patches. diff -r e3f0339b8355 -r a96edc5bcdc8 mercurial/obsutil.py --- a/mercurial/obsutil.py Mon Jul 03 03:27:58 2017 +0200 +++ b/mercurial/obsutil.py Fri Aug 04 14:47:36 2017 +0200 @@ -8,6 +8,7 @@ from __future__ import absolute_import from . import ( + node as nodemod, phases, ) @@ -551,3 +552,45 @@ final.reverse() # put small successors set first cache[current] = final return cache[initialnode] + +def computeobsfate(successorset, rawmarkers): + """ For a successor set, get all related markers and convert every nodeid + into its hexadecimal form. + """ + hex = nodemod.hex + + successorset = [hex(n) for n in successorset] + + # hex the binary nodes in the markers + markers = [] + for m in rawmarkers: + hexprec = hex(m[0]) + hexsucs = tuple(hex(n) for n in m[1]) + hexparents = None + if m[5] is not None: + hexparents = tuple(hex(n) for n in m[5]) + newmarker = (hexprec, hexsucs) + m[2:5] + (hexparents,) + m[6:] + markers.append(newmarker) + + # Format basic data + data = { + "successors": sorted(successorset), + "markers": sorted(markers) + } + + return data + +def successorsandmarkers(repo, ctx): + """compute the raw data needed for computing obsfate + Returns a list of dict, one dict per successors set + """ + if not ctx.obsolete(): + return None + + ssets = successorssets(repo, ctx.node(), closest=True) + + values = [] + for sset in ssets: + values.append({'successors': sset, 'markers': sset.markers}) + + return values diff -r e3f0339b8355 -r a96edc5bcdc8 mercurial/templatekw.py --- a/mercurial/templatekw.py Mon Jul 03 03:27:58 2017 +0200 +++ b/mercurial/templatekw.py Fri Aug 04 14:47:36 2017 +0200 @@ -655,6 +655,21 @@ return _hybrid(gen(data), data, lambda x: {'successorset': x}, lambda d: d["successorset"]) +@templatekeyword("succsandmarkers") +def showsuccsandmarkers(repo, ctx, **args): + """Returns a list of dict for each final successor of ctx. + + The dict contains successors node id in "successors" keys and the list of + obs-markers from ctx to the set of successors in "markers" + """ + + values = obsutil.successorsandmarkers(repo, ctx) + + if values is None: + values = [] + + return showlist('succsandmarkers', values, args) + @templatekeyword('p1rev') def showp1rev(repo, ctx, templ, **args): """Integer. The repository-local revision number of the changeset's diff -r e3f0339b8355 -r a96edc5bcdc8 mercurial/templater.py --- a/mercurial/templater.py Mon Jul 03 03:27:58 2017 +0200 +++ b/mercurial/templater.py Fri Aug 04 14:47:36 2017 +0200 @@ -18,6 +18,7 @@ encoding, error, minirst, + obsutil, parser, pycompat, registrar, @@ -849,6 +850,23 @@ func = lambda a, b: a % b return runarithmetic(context, mapping, (func, args[0], args[1])) +@templatefunc('obsfate(succsandmarkers)') +def obsfate(context, mapping, args): + """ Compute obsfate related information based on successors and markers + """ + data = args[0][0](context, mapping, args[0][1]) + data = obsutil.computeobsfate(data['successors'], data['markers']) + + _hybrid = templatekw._hybrid + + # Format the successors for displaying + succs = _hybrid(None, data['successors'], + lambda x: {'ctx': mapping['repo'][x], 'revcache': {}}, + lambda d: templatekw._formatrevnode(d['ctx'])) + data['successors'] = succs + + return _hybrid(None, [data], lambda x: x, ', ') + @templatefunc('relpath(path)') def relpath(context, mapping, args): """Convert a repository-absolute path into a filesystem path relative to diff -r e3f0339b8355 -r a96edc5bcdc8 tests/test-obsmarker-template.t --- a/tests/test-obsmarker-template.t Mon Jul 03 03:27:58 2017 +0200 +++ b/tests/test-obsmarker-template.t Fri Aug 04 14:47:36 2017 +0200 @@ -20,6 +20,8 @@ > {if(successorssets, "\n Successors: {successorssets}")}\ > {if(successorssets, "\n multi-line: {join(successorssets, "\n multi-line: ")}")}\ > {if(successorssets, "\n json: {successorssets|json}")}\n' + > fatelog = log -G -T '{node|short}\n{if(succsandmarkers, " Obsfate: {succsandmarkers % "{obsfate(succsandmarkers) % "rewritten as {join(successors, ", ")}; "}"} \n" )}' + > fatelogjson = log -G -T '{node|short}\n{if(succsandmarkers, " Obsfate: {succsandmarkers|json}\n")}' > EOF Test templates on amended commit @@ -33,8 +35,8 @@ $ mkcommit ROOT $ mkcommit A0 $ echo 42 >> A0 - $ hg commit --amend -m "A1" - $ hg commit --amend -m "A2" + $ HGUSER=test1 hg commit --amend -m "A1" --config devel.default-date="1234567890 0" + $ HGUSER=test2 hg commit --amend -m "A2" --config devel.default-date="987654321 0" $ hg log --hidden -G @ changeset: 4:d004c8f274b9 @@ -83,6 +85,27 @@ | json: [["d004c8f274b9ec480a47a93c10dac5eee63adb78"]] o ea207398892e + $ hg fatelog -q + o d004c8f274b9 + | + | @ 471f378eab4c + |/ Obsfate: rewritten as 4:d004c8f274b9; + o ea207398892e + + $ hg fatelog + o d004c8f274b9 + | + | @ 471f378eab4c + |/ Obsfate: rewritten as 4:d004c8f274b9; + o ea207398892e + + $ hg fatelog -v + o d004c8f274b9 + | + | @ 471f378eab4c + |/ Obsfate: rewritten as 4:d004c8f274b9; + o ea207398892e + $ hg up 'desc(A1)' --hidden 1 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -99,6 +122,13 @@ | json: [["d004c8f274b9ec480a47a93c10dac5eee63adb78"]] o ea207398892e + $ hg fatelog -v + o d004c8f274b9 + | + | @ a468dc9b3633 + |/ Obsfate: rewritten as 4:d004c8f274b9; + o ea207398892e + Predecessors template should show all the predecessors as we force their display with --hidden $ hg tlog --hidden @@ -123,6 +153,17 @@ | json: [["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]] o ea207398892e + $ hg fatelog --hidden -q + o d004c8f274b9 + | + | @ a468dc9b3633 + |/ Obsfate: rewritten as 4:d004c8f274b9; + | x f137d23bb3e1 + | | + | x 471f378eab4c + |/ Obsfate: rewritten as 3:a468dc9b3633; + o ea207398892e + Predecessors template shouldn't show anything as all obsolete commit are not visible. @@ -155,7 +196,35 @@ | json: [["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]] o ea207398892e + $ hg fatelog -v + @ d004c8f274b9 + | + o ea207398892e + + $ hg fatelog -v --hidden + @ d004c8f274b9 + | + | x a468dc9b3633 + |/ Obsfate: rewritten as 4:d004c8f274b9; + | x f137d23bb3e1 + | | + | x 471f378eab4c + |/ Obsfate: rewritten as 3:a468dc9b3633; + o ea207398892e + + + $ hg fatelogjson --hidden + @ d004c8f274b9 + | + | x a468dc9b3633 + |/ Obsfate: [{"markers": [["\udca4h\u071b63\udc8b\u0014\udcfd\udcb7\udc82_U\udcce=\udcf4\udce7\u0015\u0017\udcad", ["\udcd0\u0004\udcc8\udcf2t\udcb9\udcecH\nG\udca9\u003c\u0010\udcda\udcc5\udcee\udce6:\udcdbx"], 0, [["user", "test2"]], [987654321.0, 0], null]], "successors": ["\udcd0\u0004\udcc8\udcf2t\udcb9\udcecH\nG\udca9\u003c\u0010\udcda\udcc5\udcee\udce6:\udcdbx"]}] + | x f137d23bb3e1 + | | + | x 471f378eab4c + |/ Obsfate: [{"markers": [["G\u001f7\udc8e\udcabL^%\udcf6\udcc7\u007fx['\udcc96\udcef\udcb2(t", ["\udca4h\u071b63\udc8b\u0014\udcfd\udcb7\udc82_U\udcce=\udcf4\udce7\u0015\u0017\udcad"], 0, [["user", "test1"]], [1234567890.0, 0], null]], "successors": ["\udca4h\u071b63\udc8b\u0014\udcfd\udcb7\udc82_U\udcce=\udcf4\udce7\u0015\u0017\udcad"]}] + o ea207398892e + Test templates with splitted commit =================================== @@ -239,6 +308,16 @@ | json: [["337fec4d2edcf0e7a467e35f818234bc620068b5", "f257fde29c7a847c9b607f6e958656d0df0fb15c"]] o ea207398892e + + $ hg fatelog + o f257fde29c7a + | + o 337fec4d2edc + | + | @ 471597cad322 + |/ Obsfate: rewritten as 2:337fec4d2edc, 3:f257fde29c7a; + o ea207398892e + $ hg up f257fde29c7a 0 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -270,6 +349,25 @@ | json: [["337fec4d2edcf0e7a467e35f818234bc620068b5", "f257fde29c7a847c9b607f6e958656d0df0fb15c"]] o ea207398892e + + $ hg fatelog --hidden + @ f257fde29c7a + | + o 337fec4d2edc + | + | x 471597cad322 + |/ Obsfate: rewritten as 2:337fec4d2edc, 3:f257fde29c7a; + o ea207398892e + + $ hg fatelogjson --hidden + @ f257fde29c7a + | + o 337fec4d2edc + | + | x 471597cad322 + |/ Obsfate: [{"markers": [["G\u0015\udc97\udcca\udcd3\"\udcd1\udcf6Y\udcbb\u0016\udc97Q\udcbe\udc913\udcda\udcd9.\udcf3", ["3\u007f\udcecM.\udcdc\udcf0\udce7\udca4g\udce3_\udc81\udc824\udcbcb\u0000h\udcb5", "\udcf2W\udcfd\udce2\udc9cz\udc84|\udc9b`\u007fn\udc95\udc86V\udcd0\udcdf\u000f\udcb1\\"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["3\u007f\udcecM.\udcdc\udcf0\udce7\udca4g\udce3_\udc81\udc824\udcbcb\u0000h\udcb5", "\udcf2W\udcfd\udce2\udc9cz\udc84|\udc9b`\u007fn\udc95\udc86V\udcd0\udcdf\u000f\udcb1\\"]}] + o ea207398892e + Test templates with folded commit ================================= @@ -354,6 +452,14 @@ | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e + + $ hg fatelog + o eb5a0daa2192 + | + | @ 471f378eab4c + |/ Obsfate: rewritten as 3:eb5a0daa2192; + o ea207398892e + $ hg up 'desc(B0)' --hidden 1 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -375,6 +481,16 @@ | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e + + $ hg fatelog + o eb5a0daa2192 + | + | @ 0dec01379d3b + | | Obsfate: rewritten as 3:eb5a0daa2192; + | x 471f378eab4c + |/ Obsfate: rewritten as 3:eb5a0daa2192; + o ea207398892e + $ hg up 'desc(C0)' 0 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -404,6 +520,26 @@ o ea207398892e + $ hg fatelog --hidden + @ eb5a0daa2192 + | + | x 0dec01379d3b + | | Obsfate: rewritten as 3:eb5a0daa2192; + | x 471f378eab4c + |/ Obsfate: rewritten as 3:eb5a0daa2192; + o ea207398892e + + + $ hg fatelogjson --hidden + @ eb5a0daa2192 + | + | x 0dec01379d3b + | | Obsfate: [{"markers": [["\r\udcec\u00017\udc9d;\udce61\udc8cG\u000e\udcad1\udcb1\udcfez\udce7\udccbS\udcd5", ["\udcebZ\r\udcaa!\udc92;\udcbf\udc8c\udcae\udcb2\udcc4 \udc85\udcb9\udce4c\udc86\u001f\udcd0"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\udcebZ\r\udcaa!\udc92;\udcbf\udc8c\udcae\udcb2\udcc4 \udc85\udcb9\udce4c\udc86\u001f\udcd0"]}] + | x 471f378eab4c + |/ Obsfate: [{"markers": [["G\u001f7\udc8e\udcabL^%\udcf6\udcc7\u007fx['\udcc96\udcef\udcb2(t", ["\udcebZ\r\udcaa!\udc92;\udcbf\udc8c\udcae\udcb2\udcc4 \udc85\udcb9\udce4c\udc86\u001f\udcd0"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\udcebZ\r\udcaa!\udc92;\udcbf\udc8c\udcae\udcb2\udcc4 \udc85\udcb9\udce4c\udc86\u001f\udcd0"]}] + o ea207398892e + + Test templates with divergence ============================== @@ -521,6 +657,15 @@ | json: [["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e"], ["019fadeab383f6699fa83ad7bdb4d82ed2c0e5ab"]] o ea207398892e + $ hg fatelog + o 019fadeab383 + | + | o fdf9bde5129a + |/ + | @ 471f378eab4c + |/ Obsfate: rewritten as 2:fdf9bde5129a; rewritten as 4:019fadeab383; + o ea207398892e + $ hg up 'desc(A1)' 0 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -533,6 +678,14 @@ |/ o ea207398892e + + $ hg fatelog + o 019fadeab383 + | + | @ fdf9bde5129a + |/ + o ea207398892e + Predecessors template should the predecessors as we force their display with --hidden $ hg tlog --hidden @@ -562,6 +715,30 @@ o ea207398892e + $ hg fatelog --hidden + o 019fadeab383 + | + | x 65b757b745b9 + |/ Obsfate: rewritten as 4:019fadeab383; + | @ fdf9bde5129a + |/ + | x 471f378eab4c + |/ Obsfate: rewritten as 2:fdf9bde5129a; rewritten as 3:65b757b745b9; + o ea207398892e + + + $ hg fatelogjson --hidden + o 019fadeab383 + | + | x 65b757b745b9 + |/ Obsfate: [{"markers": [["e\udcb7W\udcb7E\udcb95\t\u003c\udc87\udca2\udcbc\u0347u!\udccc\udccf\udcfc\udcbd", ["\u0001\udc9f\udcad\uacc3\udcf6i\udc9f\udca8:\u05fd\udcb4\udcd8.\udcd2\udcc0\udce5\udcab"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\u0001\udc9f\udcad\uacc3\udcf6i\udc9f\udca8:\u05fd\udcb4\udcd8.\udcd2\udcc0\udce5\udcab"]}] + | @ fdf9bde5129a + |/ + | x 471f378eab4c + |/ Obsfate: [{"markers": [["G\u001f7\udc8e\udcabL^%\udcf6\udcc7\u007fx['\udcc96\udcef\udcb2(t", ["\udcfd\udcf9\udcbd\udce5\u0012\udc9a(\udcd4T\udc8f\udcad\udcd3\udcf6+&\\\udcdd;z."], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\udcfd\udcf9\udcbd\udce5\u0012\udc9a(\udcd4T\udc8f\udcad\udcd3\udcf6+&\\\udcdd;z."]}, {"markers": [["G\u001f7\udc8e\udcabL^%\udcf6\udcc7\u007fx['\udcc96\udcef\udcb2(t", ["e\udcb7W\udcb7E\udcb95\t\u003c\udc87\udca2\udcbc\u0347u!\udccc\udccf\udcfc\udcbd"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["e\udcb7W\udcb7E\udcb95\t\u003c\udc87\udca2\udcbc\u0347u!\udccc\udccf\udcfc\udcbd"]}] + o ea207398892e + + Test templates with amended + folded commit =========================================== @@ -659,6 +836,14 @@ | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e + + $ hg fatelog + o eb5a0daa2192 + | + | @ 471f378eab4c + |/ Obsfate: rewritten as 4:eb5a0daa2192; + o ea207398892e + $ hg up 'desc(B0)' --hidden 1 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -679,6 +864,16 @@ | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e + + $ hg fatelog + o eb5a0daa2192 + | + | @ 0dec01379d3b + | | Obsfate: rewritten as 4:eb5a0daa2192; + | x 471f378eab4c + |/ Obsfate: rewritten as 4:eb5a0daa2192; + o ea207398892e + $ hg up 'desc(B1)' --hidden 0 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -699,6 +894,16 @@ | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e + + $ hg fatelog + o eb5a0daa2192 + | + | @ b7ea6d14e664 + | | Obsfate: rewritten as 4:eb5a0daa2192; + | x 471f378eab4c + |/ Obsfate: rewritten as 4:eb5a0daa2192; + o ea207398892e + $ hg up 'desc(C0)' 0 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -708,6 +913,12 @@ | o ea207398892e + + $ hg fatelog + @ eb5a0daa2192 + | + o ea207398892e + Predecessors template should show all predecessors as we force their display with --hidden $ hg tlog --hidden @@ -735,6 +946,30 @@ o ea207398892e + $ hg fatelog --hidden + @ eb5a0daa2192 + | + | x b7ea6d14e664 + | | Obsfate: rewritten as 4:eb5a0daa2192; + | | x 0dec01379d3b + | |/ Obsfate: rewritten as 3:b7ea6d14e664; + | x 471f378eab4c + |/ Obsfate: rewritten as 4:eb5a0daa2192; + o ea207398892e + + + $ hg fatelogjson --hidden + @ eb5a0daa2192 + | + | x b7ea6d14e664 + | | Obsfate: [{"markers": [["\udcb7\udceam\u0014\udce6d\udcbd\u0212\"!\udcf7\udc99&1\udcb5\r\udca3\udcfb\u0007", ["\udcebZ\r\udcaa!\udc92;\udcbf\udc8c\udcae\udcb2\udcc4 \udc85\udcb9\udce4c\udc86\u001f\udcd0"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\udcebZ\r\udcaa!\udc92;\udcbf\udc8c\udcae\udcb2\udcc4 \udc85\udcb9\udce4c\udc86\u001f\udcd0"]}] + | | x 0dec01379d3b + | |/ Obsfate: [{"markers": [["\r\udcec\u00017\udc9d;\udce61\udc8cG\u000e\udcad1\udcb1\udcfez\udce7\udccbS\udcd5", ["\udcb7\udceam\u0014\udce6d\udcbd\u0212\"!\udcf7\udc99&1\udcb5\r\udca3\udcfb\u0007"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\udcb7\udceam\u0014\udce6d\udcbd\u0212\"!\udcf7\udc99&1\udcb5\r\udca3\udcfb\u0007"]}] + | x 471f378eab4c + |/ Obsfate: [{"markers": [["G\u001f7\udc8e\udcabL^%\udcf6\udcc7\u007fx['\udcc96\udcef\udcb2(t", ["\udcebZ\r\udcaa!\udc92;\udcbf\udc8c\udcae\udcb2\udcc4 \udc85\udcb9\udce4c\udc86\u001f\udcd0"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\udcebZ\r\udcaa!\udc92;\udcbf\udc8c\udcae\udcb2\udcc4 \udc85\udcb9\udce4c\udc86\u001f\udcd0"]}] + o ea207398892e + + Test template with pushed and pulled obs markers ================================================ @@ -838,6 +1073,14 @@ | json: [["7a230b46bf61e50b30308c6cfd7bd1269ef54702"]] o ea207398892e + + $ hg fatelog + o 7a230b46bf61 + | + | @ 471f378eab4c + |/ Obsfate: rewritten as 2:7a230b46bf61; + o ea207398892e + $ hg up 'desc(A2)' 0 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -847,6 +1090,12 @@ | o ea207398892e + + $ hg fatelog + @ 7a230b46bf61 + | + o ea207398892e + Predecessors template should show all predecessors as we force their display with --hidden $ hg tlog --hidden @@ -862,6 +1111,14 @@ o ea207398892e + $ hg fatelog --hidden + @ 7a230b46bf61 + | + | x 471f378eab4c + |/ Obsfate: rewritten as 2:7a230b46bf61; + o ea207398892e + + Test template with obsmarkers cycle =================================== @@ -895,6 +1152,12 @@ o ea207398892e + $ hg fatelog + @ f897c6137566 + | + o ea207398892e + + $ hg up -r "desc(B0)" --hidden 2 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg tlog @@ -923,6 +1186,16 @@ o ea207398892e + $ hg fatelog + o f897c6137566 + | + | @ 0dec01379d3b + | | Obsfate: rewritten as 3:f897c6137566; rewritten as 1:471f378eab4c; + | x 471f378eab4c + |/ Obsfate: rewritten as 2:0dec01379d3b; + o ea207398892e + + $ hg up -r "desc(A0)" --hidden 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg tlog @@ -936,6 +1209,14 @@ o ea207398892e + $ hg fatelog + o f897c6137566 + | + | @ 471f378eab4c + |/ + o ea207398892e + + $ hg up -r "desc(ROOT)" --hidden 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg tlog @@ -944,6 +1225,12 @@ @ ea207398892e + $ hg fatelog + o f897c6137566 + | + @ ea207398892e + + $ hg tlog --hidden o f897c6137566 | Predecessors: 2:0dec01379d3b @@ -1153,6 +1440,21 @@ | o ea207398892e + $ hg fatelog + @ 0b997eb7ceee + | + | o b18bc8331526 + |/ + | o ba2ed02b0c9a + | | + | x 4a004186e638 + |/ Obsfate: rewritten as 8:b18bc8331526; rewritten as 9:0b997eb7ceee; + o dd800401bd8c + | + o f897c6137566 + | + o ea207398892e + $ hg tlog --hidden @ 0b997eb7ceee | Predecessors: 6:4a004186e638 @@ -1211,6 +1513,48 @@ | json: [["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]] o ea207398892e + $ hg fatelog --hidden + @ 0b997eb7ceee + | + | o b18bc8331526 + |/ + | o ba2ed02b0c9a + | | + | x 4a004186e638 + |/ Obsfate: rewritten as 8:b18bc8331526; rewritten as 9:0b997eb7ceee; + o dd800401bd8c + | + | x 9bd10a0775e4 + |/ Obsfate: rewritten as 6:4a004186e638, 7:ba2ed02b0c9a, 5:dd800401bd8c; + o f897c6137566 + | + | x 0dec01379d3b + | | Obsfate: rewritten as 3:f897c6137566; rewritten as 1:471f378eab4c; + | x 471f378eab4c + |/ Obsfate: rewritten as 2:0dec01379d3b; + o ea207398892e + + $ hg fatelogjson --hidden + @ 0b997eb7ceee + | + | o b18bc8331526 + |/ + | o ba2ed02b0c9a + | | + | x 4a004186e638 + |/ Obsfate: [{"markers": [["J\u0000A\udc86\udce68\udc89\udcf2\f\udcb1d4\udcfc\udcbdr\"\u000b\udcd1\udcea\udcce", ["\udcb1\udc8b\udcc83\u0015&\udca2,\udcbb\u0018\u0001\u0002+\udcd1U[\udcf2\udc91\u010b"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\udcb1\udc8b\udcc83\u0015&\udca2,\udcbb\u0018\u0001\u0002+\udcd1U[\udcf2\udc91\u010b"]}, {"markers": [["J\u0000A\udc86\udce68\udc89\udcf2\f\udcb1d4\udcfc\udcbdr\"\u000b\udcd1\udcea\udcce", ["\u000b\udc99~\udcb7\udcce\udcee\udce0b\u0000\udca0/\udc8a\udcab\u0018Yy\t-QN"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\u000b\udc99~\udcb7\udcce\udcee\udce0b\u0000\udca0/\udc8a\udcab\u0018Yy\t-QN"]}] + o dd800401bd8c + | + | x 9bd10a0775e4 + |/ Obsfate: [{"markers": [["\udc9b\udcd1\n\u0007u\udce4xp\udc8c\udcad\udca5\udcf1v\udcecm\udce6T5\udc9c\udce7", ["\u0740\u0004\u0001\udcbd\udc8cy\udcd8\u00152\udc92ws\udc9eC\u003e\udc88?xN", "J\u0000A\udc86\udce68\udc89\udcf2\f\udcb1d4\udcfc\udcbdr\"\u000b\udcd1\udcea\udcce", "\udcba.\udcd0+\f\udc9aV\udcb9\udcfd\udcbcNy\udcc7\udce5xf\udc98M\udc8a\u001f"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\u0740\u0004\u0001\udcbd\udc8cy\udcd8\u00152\udc92ws\udc9eC\u003e\udc88?xN", "J\u0000A\udc86\udce68\udc89\udcf2\f\udcb1d4\udcfc\udcbdr\"\u000b\udcd1\udcea\udcce", "\udcba.\udcd0+\f\udc9aV\udcb9\udcfd\udcbcNy\udcc7\udce5xf\udc98M\udc8a\u001f"]}] + o f897c6137566 + | + | x 0dec01379d3b + | | Obsfate: [{"markers": [["\r\udcec\u00017\udc9d;\udce61\udc8cG\u000e\udcad1\udcb1\udcfez\udce7\udccbS\udcd5", ["\udcf8\udc97\udcc6\u0013uf2\u000b\b\u0015\u0014\udcb4\udcc7\"~\udccc=8K9"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\udcf8\udc97\udcc6\u0013uf2\u000b\b\u0015\u0014\udcb4\udcc7\"~\udccc=8K9"]}, {"markers": [["\r\udcec\u00017\udc9d;\udce61\udc8cG\u000e\udcad1\udcb1\udcfez\udce7\udccbS\udcd5", ["G\u001f7\udc8e\udcabL^%\udcf6\udcc7\u007fx['\udcc96\udcef\udcb2(t"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["G\u001f7\udc8e\udcabL^%\udcf6\udcc7\u007fx['\udcc96\udcef\udcb2(t"]}] + | x 471f378eab4c + |/ Obsfate: [{"markers": [["G\u001f7\udc8e\udcabL^%\udcf6\udcc7\u007fx['\udcc96\udcef\udcb2(t", ["\r\udcec\u00017\udc9d;\udce61\udc8cG\u000e\udcad1\udcb1\udcfez\udce7\udccbS\udcd5"], 0, [["user", "test"]], [0.0, 0], null]], "successors": ["\r\udcec\u00017\udc9d;\udce61\udc8cG\u000e\udcad1\udcb1\udcfez\udce7\udccbS\udcd5"]}] + o ea207398892e + $ hg up --hidden 4 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg rebase -r 7 -d 8 --config extensions.rebase= @@ -1245,6 +1589,22 @@ | o ea207398892e + + $ hg fatelog + o eceed8f98ffc + | + | o 0b997eb7ceee + | | + o | b18bc8331526 + |/ + o dd800401bd8c + | + | @ 9bd10a0775e4 + |/ Obsfate: rewritten as 9:0b997eb7ceee, 5:dd800401bd8c, 10:eceed8f98ffc; rewritten as 8:b18bc8331526, 5:dd800401bd8c, 10:eceed8f98ffc; + o f897c6137566 + | + o ea207398892e + Test templates with pruned commits ================================== @@ -1268,3 +1628,13 @@ | o ea207398892e + $ hg fatelog + @ 471f378eab4c + | + o ea207398892e + + $ hg fatelog -v + @ 471f378eab4c + | + o ea207398892e + _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel