docs: add SVG figures for sharing.rst
Generated by graphviz loosely based on .dot files produced by dotgraph
extension.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg01-ab.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="224pt" height="116pt"
+ viewBox="0.00 0.00 224.00 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-108 0,-108 0,-72 72,-72 72,-108"/>
+<text text-anchor="middle" x="36" y="-86.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-108 144,-108 144,-72 216,-72 216,-108"/>
+<text text-anchor="middle" x="180" y="-86.3" font-family="mono" font-size="14.00" fill="#000000">1:f649</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-90C90.9973,-90 113.9327,-90 133.8329,-90"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-93.5001 143.924,-90 133.924,-86.5001 133.9241,-93.5001"/>
+</g>
+<!-- T0 -->
+<g id="node3" class="node">
+<title>T0</title>
+<text text-anchor="start" x="11" y="-15.3" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">public</text>
+</g>
+<!-- T0->0 -->
+<g id="edge2" class="edge">
+<title>T0->0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M36,-36.1686C36,-43.869 36,-53.0257 36,-61.5834"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="32.5001,-61.5867 36,-71.5867 39.5001,-61.5868 32.5001,-61.5867"/>
+</g>
+<!-- T1 -->
+<g id="node4" class="node">
+<title>T1</title>
+<text text-anchor="start" x="159" y="-15.3" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">draft</text>
+</g>
+<!-- T1->1 -->
+<g id="edge3" class="edge">
+<title>T1->1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M180,-36.1686C180,-43.869 180,-53.0257 180,-61.5834"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="176.5001,-61.5867 180,-71.5867 183.5001,-61.5868 176.5001,-61.5867"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg02-b.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="427pt" height="332pt"
+ viewBox="0.00 0.00 427.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-324 0,-324 0,-288 72,-288 72,-324"/>
+<text text-anchor="middle" x="36" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-324 144,-324 144,-288 216,-288 216,-324"/>
+<text text-anchor="middle" x="180" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">1:f649</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-306C90.9973,-306 113.9327,-306 133.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-309.5001 143.924,-306 133.924,-302.5001 133.9241,-309.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-180 144,-180 144,-144 216,-144 216,-180"/>
+<text text-anchor="middle" x="180" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">2:96d8</text>
+</g>
+<!-- 0->2 -->
+<g id="edge2" class="edge">
+<title>0->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M54.2377,-287.7623C79.6646,-262.3354 125.8747,-216.1253 154.6431,-187.3569"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="157.3142,-189.6356 161.9104,-180.0896 152.3644,-184.6858 157.3142,-189.6356"/>
+</g>
+<!-- 3 -->
+<g id="node4" class="node">
+<title>3</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-36 144,-36 144,0 216,0 216,-36"/>
+<text text-anchor="middle" x="180" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">3:522d</text>
+</g>
+<!-- 0->3 -->
+<g id="edge3" class="edge">
+<title>0->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45.0078,-287.9843C69.5046,-238.9909 137.4407,-103.1186 166.5153,-44.9694"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="169.6539,-46.5184 170.9956,-36.0089 163.3929,-43.3879 169.6539,-46.5184"/>
+</g>
+<!-- 1->2 -->
+<g id="edge4" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M180,-279.7351C180,-250.8541 180,-205.2198 180,-180.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="180" cy="-283.7623" rx="4" ry="4"/>
+</g>
+<!-- 2->3 -->
+<g id="edge5" class="edge">
+<title>2->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M180,-135.7351C180,-106.8541 180,-61.2198 180,-36.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="180" cy="-139.7623" rx="4" ry="4"/>
+</g>
+<!-- T12 -->
+<g id="node5" class="node">
+<title>T12</title>
+<text text-anchor="start" x="237" y="-231.3" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">obsolete (and hidden)</text>
+</g>
+<!-- T12->1 -->
+<g id="edge6" class="edge">
+<title>T12->1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M287.6627,-252.1686C268.6604,-261.6698 245.2242,-273.3879 225.0748,-283.4626"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="223.455,-280.3593 216.076,-287.962 226.5855,-286.6203 223.455,-280.3593"/>
+</g>
+<!-- T12->2 -->
+<g id="edge7" class="edge">
+<title>T12->2</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M287.6627,-215.8314C268.6604,-206.3302 245.2242,-194.6121 225.0748,-184.5374"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="226.5855,-181.3797 216.076,-180.038 223.455,-187.6407 226.5855,-181.3797"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg03.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="427pt" height="188pt"
+ viewBox="0.00 0.00 427.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-180 0,-180 0,-144 72,-144 72,-180"/>
+<text text-anchor="middle" x="36" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-180 144,-180 144,-144 216,-144 216,-180"/>
+<text text-anchor="middle" x="180" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">1:f649</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-162C90.9973,-162 113.9327,-162 133.8329,-162"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-165.5001 143.924,-162 133.924,-158.5001 133.9241,-165.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-36 144,-36 144,0 216,0 216,-36"/>
+<text text-anchor="middle" x="180" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">2:522d</text>
+</g>
+<!-- 0->2 -->
+<g id="edge2" class="edge">
+<title>0->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M54.2377,-143.7623C79.6646,-118.3354 125.8747,-72.1253 154.6431,-43.3569"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="157.3142,-45.6356 161.9104,-36.0896 152.3644,-40.6858 157.3142,-45.6356"/>
+</g>
+<!-- 1->2 -->
+<g id="edge3" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M180,-135.7351C180,-106.8541 180,-61.2198 180,-36.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="180" cy="-139.7623" rx="4" ry="4"/>
+</g>
+<!-- T1 -->
+<g id="node4" class="node">
+<title>T1</title>
+<text text-anchor="start" x="237" y="-93.8" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">obsolete (and hidden)</text>
+<text text-anchor="start" x="266" y="-79.8" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">after the push</text>
+</g>
+<!-- T1->1 -->
+<g id="edge4" class="edge">
+<title>T1->1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M287.6627,-108.1686C268.6604,-117.6698 245.2242,-129.3879 225.0748,-139.4626"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="223.455,-136.3593 216.076,-143.962 226.5855,-142.6203 223.455,-136.3593"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg04-a.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="427pt" height="476pt"
+ viewBox="0.00 0.00 427.00 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-468 0,-468 0,-432 72,-432 72,-468"/>
+<text text-anchor="middle" x="36" y="-446.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-468 144,-468 144,-432 216,-432 216,-468"/>
+<text text-anchor="middle" x="180" y="-446.3" font-family="mono" font-size="14.00" fill="#000000">1:f649</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-450C90.9973,-450 113.9327,-450 133.8329,-450"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-453.5001 143.924,-450 133.924,-446.5001 133.9241,-453.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-324 144,-324 144,-288 216,-288 216,-324"/>
+<text text-anchor="middle" x="180" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">2:522d</text>
+</g>
+<!-- 0->2 -->
+<g id="edge2" class="edge">
+<title>0->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M54.2377,-431.7623C79.6646,-406.3354 125.8747,-360.1253 154.6431,-331.3569"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="157.3142,-333.6356 161.9104,-324.0896 152.3644,-328.6858 157.3142,-333.6356"/>
+</g>
+<!-- 3 -->
+<g id="node4" class="node">
+<title>3</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-180 144,-180 144,-144 216,-144 216,-180"/>
+<text text-anchor="middle" x="180" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">3:e42b</text>
+</g>
+<!-- 0->3 -->
+<g id="edge3" class="edge">
+<title>0->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45.0078,-431.9843C69.5046,-382.9909 137.4407,-247.1186 166.5153,-188.9694"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="169.6539,-190.5184 170.9956,-180.0089 163.3929,-187.3879 169.6539,-190.5184"/>
+</g>
+<!-- 4 -->
+<g id="node5" class="node">
+<title>4</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-36 144,-36 144,0 216,0 216,-36"/>
+<text text-anchor="middle" x="180" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">4:7b49</text>
+</g>
+<!-- 0->4 -->
+<g id="edge4" class="edge">
+<title>0->4</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M41.1494,-431.6714C54.9755,-382.8681 94.5425,-245.8557 134,-134 144.7835,-103.4306 158.6756,-68.9686 168.3589,-45.607"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="171.6138,-46.8951 172.2298,-36.3182 165.1524,-44.2024 171.6138,-46.8951"/>
+</g>
+<!-- 1->2 -->
+<g id="edge5" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M180,-423.7351C180,-394.8541 180,-349.2198 180,-324.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="180" cy="-427.7623" rx="4" ry="4"/>
+</g>
+<!-- 2->3 -->
+<g id="edge6" class="edge">
+<title>2->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M180,-279.7351C180,-250.8541 180,-205.2198 180,-180.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="180" cy="-283.7623" rx="4" ry="4"/>
+</g>
+<!-- 3->4 -->
+<g id="edge7" class="edge">
+<title>3->4</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M180,-135.7351C180,-106.8541 180,-61.2198 180,-36.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="180" cy="-139.7623" rx="4" ry="4"/>
+</g>
+<!-- T3 -->
+<g id="node6" class="node">
+<title>T3</title>
+<text text-anchor="start" x="237" y="-231.3" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">not in the other repo</text>
+</g>
+<!-- T3->3 -->
+<g id="edge8" class="edge">
+<title>T3->3</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M287.6627,-215.8314C268.6604,-206.3302 245.2242,-194.6121 225.0748,-184.5374"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="226.5855,-181.3797 216.076,-180.038 223.455,-187.6407 226.5855,-181.3797"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg04-b.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="427pt" height="476pt"
+ viewBox="0.00 0.00 427.00 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-468 0,-468 0,-432 72,-432 72,-468"/>
+<text text-anchor="middle" x="36" y="-446.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-468 144,-468 144,-432 216,-432 216,-468"/>
+<text text-anchor="middle" x="180" y="-446.3" font-family="mono" font-size="14.00" fill="#000000">1:f649</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-450C90.9973,-450 113.9327,-450 133.8329,-450"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-453.5001 143.924,-450 133.924,-446.5001 133.9241,-453.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-324 144,-324 144,-288 216,-288 216,-324"/>
+<text text-anchor="middle" x="180" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">2:96d8</text>
+</g>
+<!-- 0->2 -->
+<g id="edge2" class="edge">
+<title>0->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M54.2377,-431.7623C79.6646,-406.3354 125.8747,-360.1253 154.6431,-331.3569"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="157.3142,-333.6356 161.9104,-324.0896 152.3644,-328.6858 157.3142,-333.6356"/>
+</g>
+<!-- 3 -->
+<g id="node4" class="node">
+<title>3</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-180 144,-180 144,-144 216,-144 216,-180"/>
+<text text-anchor="middle" x="180" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">3:522d</text>
+</g>
+<!-- 0->3 -->
+<g id="edge3" class="edge">
+<title>0->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45.0078,-431.9843C69.5046,-382.9909 137.4407,-247.1186 166.5153,-188.9694"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="169.6539,-190.5184 170.9956,-180.0089 163.3929,-187.3879 169.6539,-190.5184"/>
+</g>
+<!-- 4 -->
+<g id="node5" class="node">
+<title>4</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="216,-36 144,-36 144,0 216,0 216,-36"/>
+<text text-anchor="middle" x="180" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">4:7b49</text>
+</g>
+<!-- 0->4 -->
+<g id="edge4" class="edge">
+<title>0->4</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M41.1494,-431.6714C54.9755,-382.8681 94.5425,-245.8557 134,-134 144.7835,-103.4306 158.6756,-68.9686 168.3589,-45.607"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="171.6138,-46.8951 172.2298,-36.3182 165.1524,-44.2024 171.6138,-46.8951"/>
+</g>
+<!-- 1->2 -->
+<g id="edge5" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M180,-423.7351C180,-394.8541 180,-349.2198 180,-324.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="180" cy="-427.7623" rx="4" ry="4"/>
+</g>
+<!-- 2->3 -->
+<g id="edge6" class="edge">
+<title>2->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M180,-279.7351C180,-250.8541 180,-205.2198 180,-180.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="180" cy="-283.7623" rx="4" ry="4"/>
+</g>
+<!-- 3->4 -->
+<g id="edge7" class="edge">
+<title>3->4</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M180,-135.7351C180,-106.8541 180,-61.2198 180,-36.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="180" cy="-139.7623" rx="4" ry="4"/>
+</g>
+<!-- T2 -->
+<g id="node6" class="node">
+<title>T2</title>
+<text text-anchor="start" x="237" y="-231.3" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">not in the other repo</text>
+</g>
+<!-- T2->2 -->
+<g id="edge8" class="edge">
+<title>T2->2</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M287.6627,-252.1686C268.6604,-261.6698 245.2242,-273.3879 225.0748,-283.4626"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="223.455,-280.3593 216.076,-287.962 226.5855,-286.6203 223.455,-280.3593"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg05.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="224pt" height="116pt"
+ viewBox="0.00 0.00 224.00 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-108 0,-108 0,-72 72,-72 72,-108"/>
+<text text-anchor="middle" x="36" y="-86.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="216,-108 144,-108 144,-72 216,-72 216,-108"/>
+<text text-anchor="middle" x="180" y="-86.3" font-family="mono" font-size="14.00" fill="#000000">1:7b49</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-90C90.9973,-90 113.9327,-90 133.8329,-90"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-93.5001 143.924,-90 133.924,-86.5001 133.9241,-93.5001"/>
+</g>
+<!-- T1 -->
+<g id="node3" class="node">
+<title>T1</title>
+<text text-anchor="start" x="17" y="-15.3" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">only the final version</text>
+</g>
+<!-- T1->1 -->
+<g id="edge2" class="edge">
+<title>T1->1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M126.1686,-36.1686C134.7152,-44.7152 145.0557,-55.0557 154.3802,-64.3802"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="152.0408,-66.9905 161.5867,-71.5867 156.9905,-62.0408 152.0408,-66.9905"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg06.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="368pt" height="188pt"
+ viewBox="0.00 0.00 368.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-180 0,-180 0,-144 72,-144 72,-180"/>
+<text text-anchor="middle" x="36" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="216,-180 144,-180 144,-144 216,-144 216,-180"/>
+<text text-anchor="middle" x="180" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">1:7b49</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-162C90.9973,-162 113.9327,-162 133.8329,-162"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-165.5001 143.924,-162 133.924,-158.5001 133.9241,-165.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="360,-180 288,-180 288,-144 360,-144 360,-180"/>
+<text text-anchor="middle" x="324" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">2:4e96</text>
+</g>
+<!-- 1->2 -->
+<g id="edge2" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.3373,-162C234.9973,-162 257.9327,-162 277.8329,-162"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="277.9241,-165.5001 287.924,-162 277.924,-158.5001 277.9241,-165.5001"/>
+</g>
+<!-- 3 -->
+<g id="node4" class="node">
+<title>3</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="360,-36 288,-36 288,0 360,0 360,-36"/>
+<text text-anchor="middle" x="324" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">3:3363</text>
+</g>
+<!-- 1->3 -->
+<g id="edge3" class="edge">
+<title>1->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M198.2377,-143.7623C223.6646,-118.3354 269.8747,-72.1253 298.6431,-43.3569"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="301.3142,-45.6356 305.9104,-36.0896 296.3644,-40.6858 301.3142,-45.6356"/>
+</g>
+<!-- 2->3 -->
+<g id="edge4" class="edge">
+<title>2->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M324,-135.7351C324,-106.8541 324,-61.2198 324,-36.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="324" cy="-139.7623" rx="4" ry="4"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg07-a.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="512pt" height="332pt"
+ viewBox="0.00 0.00 512.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-324 0,-324 0,-288 72,-288 72,-324"/>
+<text text-anchor="middle" x="36" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="216,-324 144,-324 144,-288 216,-288 216,-324"/>
+<text text-anchor="middle" x="180" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">1:7b49</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-306C90.9973,-306 113.9327,-306 133.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-309.5001 143.924,-306 133.924,-302.5001 133.9241,-309.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="360,-324 288,-324 288,-288 360,-288 360,-324"/>
+<text text-anchor="middle" x="324" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">2:4e96</text>
+</g>
+<!-- 1->2 -->
+<g id="edge2" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.3373,-306C234.9973,-306 257.9327,-306 277.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="277.9241,-309.5001 287.924,-306 277.924,-302.5001 277.9241,-309.5001"/>
+</g>
+<!-- 3 -->
+<g id="node4" class="node">
+<title>3</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="360,-180 288,-180 288,-144 360,-144 360,-180"/>
+<text text-anchor="middle" x="324" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">3:3363</text>
+</g>
+<!-- 1->3 -->
+<g id="edge3" class="edge">
+<title>1->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M198.2377,-287.7623C223.6646,-262.3354 269.8747,-216.1253 298.6431,-187.3569"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="301.3142,-189.6356 305.9104,-180.0896 296.3644,-184.6858 301.3142,-189.6356"/>
+</g>
+<!-- 4 -->
+<g id="node5" class="node">
+<title>4</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="504,-324 432,-324 432,-288 504,-288 504,-324"/>
+<text text-anchor="middle" x="468" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">4:c7ff</text>
+</g>
+<!-- 1->4 -->
+<g id="edge4" class="edge">
+<title>1->4</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.2429,-293.0352C234.5048,-287.1762 257.1468,-280.9206 278,-278 318.4937,-272.3287 329.5063,-272.3287 370,-278 387.269,-280.4186 405.7649,-285.1243 421.984,-289.9979"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="421.1689,-293.4097 431.7571,-293.0352 423.2464,-286.7251 421.1689,-293.4097"/>
+</g>
+<!-- 5 -->
+<g id="node6" class="node">
+<title>5</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="504,-180 432,-180 432,-144 504,-144 504,-180"/>
+<text text-anchor="middle" x="468" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">5:1bb4</text>
+</g>
+<!-- 1->5 -->
+<g id="edge5" class="edge">
+<title>1->5</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.1838,-287.9081C268.5617,-261.7192 365.4693,-213.2654 422.5836,-184.7082"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="424.3587,-187.7338 431.7377,-180.1311 421.2282,-181.4728 424.3587,-187.7338"/>
+</g>
+<!-- 6 -->
+<g id="node7" class="node">
+<title>6</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="504,-36 432,-36 432,0 504,0 504,-36"/>
+<text text-anchor="middle" x="468" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">6:9d21</text>
+</g>
+<!-- 1->6 -->
+<g id="edge6" class="edge">
+<title>1->6</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M186.8006,-287.7418C200.0681,-254.0493 232.1707,-181.2361 278,-134 319.9081,-90.8055 381.135,-57.2385 422.6711,-37.5692"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="424.1521,-40.7405 431.7405,-33.3467 421.1976,-34.3945 424.1521,-40.7405"/>
+</g>
+<!-- 2->3 -->
+<g id="edge7" class="edge">
+<title>2->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M324,-279.7351C324,-250.8541 324,-205.2198 324,-180.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="324" cy="-283.7623" rx="4" ry="4"/>
+</g>
+<!-- 4->5 -->
+<g id="edge8" class="edge">
+<title>4->5</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M468,-279.7351C468,-250.8541 468,-205.2198 468,-180.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="468" cy="-283.7623" rx="4" ry="4"/>
+</g>
+<!-- 5->6 -->
+<g id="edge9" class="edge">
+<title>5->6</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M468,-135.7351C468,-106.8541 468,-61.2198 468,-36.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="468" cy="-139.7623" rx="4" ry="4"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg07-b.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="368pt" height="44pt"
+ viewBox="0.00 0.00 368.00 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-36 0,-36 0,0 72,0 72,-36"/>
+<text text-anchor="middle" x="36" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="216,-36 144,-36 144,0 216,0 216,-36"/>
+<text text-anchor="middle" x="180" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">1:7b49</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-18C90.9973,-18 113.9327,-18 133.8329,-18"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-21.5001 143.924,-18 133.924,-14.5001 133.9241,-21.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="360,-36 288,-36 288,0 360,0 360,-36"/>
+<text text-anchor="middle" x="324" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">2:9d21</text>
+</g>
+<!-- 1->2 -->
+<g id="edge2" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.3373,-18C234.9973,-18 257.9327,-18 277.8329,-18"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="277.9241,-21.5001 287.924,-18 277.924,-14.5001 277.9241,-21.5001"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg08-a.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="656pt" height="332pt"
+ viewBox="0.00 0.00 656.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-324 0,-324 0,-288 72,-288 72,-324"/>
+<text text-anchor="middle" x="36" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="216,-324 144,-324 144,-288 216,-288 216,-324"/>
+<text text-anchor="middle" x="180" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">1:7b49</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-306C90.9973,-306 113.9327,-306 133.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-309.5001 143.924,-306 133.924,-302.5001 133.9241,-309.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="360,-324 288,-324 288,-288 360,-288 360,-324"/>
+<text text-anchor="middle" x="324" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">2:4e96</text>
+</g>
+<!-- 1->2 -->
+<g id="edge2" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.3373,-306C234.9973,-306 257.9327,-306 277.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="277.9241,-309.5001 287.924,-306 277.924,-302.5001 277.9241,-309.5001"/>
+</g>
+<!-- 3 -->
+<g id="node4" class="node">
+<title>3</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="360,-180 288,-180 288,-144 360,-144 360,-180"/>
+<text text-anchor="middle" x="324" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">3:3363</text>
+</g>
+<!-- 1->3 -->
+<g id="edge3" class="edge">
+<title>1->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M198.2377,-287.7623C223.6646,-262.3354 269.8747,-216.1253 298.6431,-187.3569"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="301.3142,-189.6356 305.9104,-180.0896 296.3644,-184.6858 301.3142,-189.6356"/>
+</g>
+<!-- 4 -->
+<g id="node5" class="node">
+<title>4</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="504,-324 432,-324 432,-288 504,-288 504,-324"/>
+<text text-anchor="middle" x="468" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">4:c7ff</text>
+</g>
+<!-- 1->4 -->
+<g id="edge4" class="edge">
+<title>1->4</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.2429,-293.0352C234.5048,-287.1762 257.1468,-280.9206 278,-278 318.4937,-272.3287 329.5063,-272.3287 370,-278 387.269,-280.4186 405.7649,-285.1243 421.984,-289.9979"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="421.1689,-293.4097 431.7571,-293.0352 423.2464,-286.7251 421.1689,-293.4097"/>
+</g>
+<!-- 5 -->
+<g id="node6" class="node">
+<title>5</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="504,-180 432,-180 432,-144 504,-144 504,-180"/>
+<text text-anchor="middle" x="468" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">5:1bb4</text>
+</g>
+<!-- 1->5 -->
+<g id="edge5" class="edge">
+<title>1->5</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.1838,-287.9081C268.5617,-261.7192 365.4693,-213.2654 422.5836,-184.7082"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="424.3587,-187.7338 431.7377,-180.1311 421.2282,-181.4728 424.3587,-187.7338"/>
+</g>
+<!-- 6 -->
+<g id="node7" class="node">
+<title>6</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="504,-36 432,-36 432,0 504,0 504,-36"/>
+<text text-anchor="middle" x="468" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">6:9d21</text>
+</g>
+<!-- 1->6 -->
+<g id="edge6" class="edge">
+<title>1->6</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M186.8006,-287.7418C200.0681,-254.0493 232.1707,-181.2361 278,-134 319.9081,-90.8055 381.135,-57.2385 422.6711,-37.5692"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="424.1521,-40.7405 431.7405,-33.3467 421.1976,-34.3945 424.1521,-40.7405"/>
+</g>
+<!-- 2->3 -->
+<g id="edge8" class="edge">
+<title>2->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M324,-279.7351C324,-250.8541 324,-205.2198 324,-180.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="324" cy="-283.7623" rx="4" ry="4"/>
+</g>
+<!-- 7 -->
+<g id="node8" class="node">
+<title>7</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="648,-324 576,-324 576,-288 648,-288 648,-324"/>
+<text text-anchor="middle" x="612" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">7:dd15</text>
+</g>
+<!-- 3->7 -->
+<g id="edge11" class="edge">
+<title>3->7</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M367.5785,-183.7892C424.4025,-212.2013 522.7749,-261.3875 575.7377,-287.8689"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="363.7615" cy="-181.8808" rx="4" ry="4"/>
+</g>
+<!-- 4->5 -->
+<g id="edge9" class="edge">
+<title>4->5</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M468,-279.7351C468,-250.8541 468,-205.2198 468,-180.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="468" cy="-283.7623" rx="4" ry="4"/>
+</g>
+<!-- 5->6 -->
+<g id="edge10" class="edge">
+<title>5->6</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M468,-135.7351C468,-106.8541 468,-61.2198 468,-36.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="468" cy="-139.7623" rx="4" ry="4"/>
+</g>
+<!-- 6->7 -->
+<g id="edge7" class="edge">
+<title>6->7</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M477.0078,-36.0157C501.5046,-85.0091 569.4407,-220.8814 598.5153,-279.0306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="595.3929,-280.6121 602.9956,-287.9911 601.6539,-277.4816 595.3929,-280.6121"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg08-b.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="512pt" height="44pt"
+ viewBox="0.00 0.00 512.00 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-36 0,-36 0,0 72,0 72,-36"/>
+<text text-anchor="middle" x="36" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="216,-36 144,-36 144,0 216,0 216,-36"/>
+<text text-anchor="middle" x="180" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">1:7b49</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-18C90.9973,-18 113.9327,-18 133.8329,-18"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-21.5001 143.924,-18 133.924,-14.5001 133.9241,-21.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="360,-36 288,-36 288,0 360,0 360,-36"/>
+<text text-anchor="middle" x="324" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">2:9d21</text>
+</g>
+<!-- 1->2 -->
+<g id="edge2" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.3373,-18C234.9973,-18 257.9327,-18 277.8329,-18"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="277.9241,-21.5001 287.924,-18 277.924,-14.5001 277.9241,-21.5001"/>
+</g>
+<!-- 3 -->
+<g id="node4" class="node">
+<title>3</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="504,-36 432,-36 432,0 504,0 504,-36"/>
+<text text-anchor="middle" x="468" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">3:dd15</text>
+</g>
+<!-- 2->3 -->
+<g id="edge3" class="edge">
+<title>2->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M360.3373,-18C378.9973,-18 401.9327,-18 421.8329,-18"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="421.9241,-21.5001 431.924,-18 421.924,-14.5001 421.9241,-21.5001"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg09.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="915pt" height="332pt"
+ viewBox="0.00 0.00 915.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-324 0,-324 0,-288 72,-288 72,-324"/>
+<text text-anchor="middle" x="36" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="216,-324 144,-324 144,-288 216,-288 216,-324"/>
+<text text-anchor="middle" x="180" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">1:7b49</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-306C90.9973,-306 113.9327,-306 133.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-309.5001 143.924,-306 133.924,-302.5001 133.9241,-309.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="360,-324 288,-324 288,-288 360,-288 360,-324"/>
+<text text-anchor="middle" x="324" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">2:9d21</text>
+</g>
+<!-- 1->2 -->
+<g id="edge2" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.3373,-306C234.9973,-306 257.9327,-306 277.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="277.9241,-309.5001 287.924,-306 277.924,-302.5001 277.9241,-309.5001"/>
+</g>
+<!-- 3 -->
+<g id="node4" class="node">
+<title>3</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="504,-324 432,-324 432,-288 504,-288 504,-324"/>
+<text text-anchor="middle" x="468" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">3:dd15</text>
+</g>
+<!-- 2->3 -->
+<g id="edge3" class="edge">
+<title>2->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M360.3373,-306C378.9973,-306 401.9327,-306 421.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="421.9241,-309.5001 431.924,-306 421.924,-302.5001 421.9241,-309.5001"/>
+</g>
+<!-- 4 -->
+<g id="node5" class="node">
+<title>4</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="648,-324 576,-324 576,-288 648,-288 648,-324"/>
+<text text-anchor="middle" x="612" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">4:b2be</text>
+</g>
+<!-- 3->4 -->
+<g id="edge4" class="edge">
+<title>3->4</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M504.3373,-306C522.9973,-306 545.9327,-306 565.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="565.9241,-309.5001 575.924,-306 565.924,-302.5001 565.9241,-309.5001"/>
+</g>
+<!-- 5 -->
+<g id="node6" class="node">
+<title>5</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="1,5" points="648,-180 576,-180 576,-144 648,-144 648,-180"/>
+<text text-anchor="middle" x="612" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">5:541f</text>
+</g>
+<!-- 3->5 -->
+<g id="edge5" class="edge">
+<title>3->5</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M486.2377,-287.7623C511.6646,-262.3354 557.8747,-216.1253 586.6431,-187.3569"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="589.3142,-189.6356 593.9104,-180.0896 584.3644,-184.6858 589.3142,-189.6356"/>
+</g>
+<!-- 6 -->
+<g id="node7" class="node">
+<title>6</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="1,5" points="648,-36 576,-36 576,0 648,0 648,-36"/>
+<text text-anchor="middle" x="612" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">6:e3a5</text>
+</g>
+<!-- 3->6 -->
+<g id="edge6" class="edge">
+<title>3->6</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M477.0078,-287.9843C501.5046,-238.9909 569.4407,-103.1186 598.5153,-44.9694"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="601.6539,-46.5184 602.9956,-36.0089 595.3929,-43.3879 601.6539,-46.5184"/>
+</g>
+<!-- 4->5 -->
+<g id="edge7" class="edge">
+<title>4->5</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M612,-279.7351C612,-250.8541 612,-205.2198 612,-180.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="612" cy="-283.7623" rx="4" ry="4"/>
+</g>
+<!-- 4->6 -->
+<g id="edge8" class="edge">
+<title>4->6</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M625.3853,-280.468C636.6169,-257.5116 651.7909,-222.5014 658,-190 662.6703,-165.5532 662.6703,-158.4468 658,-134 651.089,-97.8245 633.0717,-58.541 621.7462,-36.23"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="623.5304" cy="-284.19" rx="4" ry="4"/>
+</g>
+<!-- T5 -->
+<g id="node8" class="node">
+<title>T5</title>
+<text text-anchor="start" x="710.5" y="-303.3" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">working dir</text>
+</g>
+<!-- T5->5 -->
+<g id="edge9" class="edge">
+<title>T5->5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M737.7623,-287.7623C712.3354,-262.3354 666.1253,-216.1253 637.3569,-187.3569"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="639.6356,-184.6858 630.0896,-180.0896 634.6858,-189.6356 639.6356,-184.6858"/>
+</g>
+<!-- T56 -->
+<g id="node9" class="node">
+<title>T56</title>
+<text text-anchor="start" x="757.5" y="-87.3" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">content-divergent</text>
+</g>
+<!-- T56->5 -->
+<g id="edge10" class="edge">
+<title>T56->5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M773.7729,-108.0757C738.0585,-119.9805 691.8113,-135.3962 657.9171,-146.6943"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="656.6429,-143.4296 648.2629,-149.9124 658.8566,-150.0704 656.6429,-143.4296"/>
+</g>
+<!-- T56->6 -->
+<g id="edge11" class="edge">
+<title>T56->6</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M773.7729,-71.9243C738.0585,-60.0195 691.8113,-44.6038 657.9171,-33.3057"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="658.8566,-29.9296 648.2629,-30.0876 656.6429,-36.5704 658.8566,-29.9296"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/figures/figure-sg10.svg Mon Nov 11 03:40:20 2019 +0700
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: Mercurial graph Pages: 1 -->
+<svg width="826pt" height="332pt"
+ viewBox="0.00 0.00 826.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
+<title>Mercurial graph</title>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-324 0,-324 0,-288 72,-288 72,-324"/>
+<text text-anchor="middle" x="36" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
+</g>
+<!-- 1 -->
+<g id="node2" class="node">
+<title>1</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="216,-324 144,-324 144,-288 216,-288 216,-324"/>
+<text text-anchor="middle" x="180" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">1:7b49</text>
+</g>
+<!-- 0->1 -->
+<g id="edge1" class="edge">
+<title>0->1</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-306C90.9973,-306 113.9327,-306 133.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-309.5001 143.924,-306 133.924,-302.5001 133.9241,-309.5001"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="360,-324 288,-324 288,-288 360,-288 360,-324"/>
+<text text-anchor="middle" x="324" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">2:9d21</text>
+</g>
+<!-- 1->2 -->
+<g id="edge2" class="edge">
+<title>1->2</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M216.3373,-306C234.9973,-306 257.9327,-306 277.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="277.9241,-309.5001 287.924,-306 277.924,-302.5001 277.9241,-309.5001"/>
+</g>
+<!-- 3 -->
+<g id="node4" class="node">
+<title>3</title>
+<polygon fill="none" stroke="#000000" stroke-width="4" points="504,-324 432,-324 432,-288 504,-288 504,-324"/>
+<text text-anchor="middle" x="468" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">3:dd15</text>
+</g>
+<!-- 2->3 -->
+<g id="edge3" class="edge">
+<title>2->3</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M360.3373,-306C378.9973,-306 401.9327,-306 421.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="421.9241,-309.5001 431.924,-306 421.924,-302.5001 421.9241,-309.5001"/>
+</g>
+<!-- 4 -->
+<g id="node5" class="node">
+<title>4</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="648,-324 576,-324 576,-288 648,-288 648,-324"/>
+<text text-anchor="middle" x="612" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">4:b2be</text>
+</g>
+<!-- 3->4 -->
+<g id="edge4" class="edge">
+<title>3->4</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M504.3373,-306C522.9973,-306 545.9327,-306 565.8329,-306"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="565.9241,-309.5001 575.924,-306 565.924,-302.5001 565.9241,-309.5001"/>
+</g>
+<!-- 5 -->
+<g id="node6" class="node">
+<title>5</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="648,-180 576,-180 576,-144 648,-144 648,-180"/>
+<text text-anchor="middle" x="612" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">5:541f</text>
+</g>
+<!-- 3->5 -->
+<g id="edge5" class="edge">
+<title>3->5</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M486.2377,-287.7623C511.6646,-262.3354 557.8747,-216.1253 586.6431,-187.3569"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="589.3142,-189.6356 593.9104,-180.0896 584.3644,-184.6858 589.3142,-189.6356"/>
+</g>
+<!-- 6 -->
+<g id="node7" class="node">
+<title>6</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="648,-36 576,-36 576,0 648,0 648,-36"/>
+<text text-anchor="middle" x="612" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">6:e3a5</text>
+</g>
+<!-- 3->6 -->
+<g id="edge6" class="edge">
+<title>3->6</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M477.0078,-287.9843C501.5046,-238.9909 569.4407,-103.1186 598.5153,-44.9694"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="601.6539,-46.5184 602.9956,-36.0089 595.3929,-43.3879 601.6539,-46.5184"/>
+</g>
+<!-- 7 -->
+<g id="node8" class="node">
+<title>7</title>
+<polygon fill="none" stroke="#000000" stroke-width="2" points="792,-108 720,-108 720,-72 792,-72 792,-108"/>
+<text text-anchor="middle" x="756" y="-86.3" font-family="mono" font-size="14.00" fill="#000000">7:aa82</text>
+</g>
+<!-- 3->7 -->
+<g id="edge7" class="edge">
+<title>3->7</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M503.3193,-287.8752C542.8036,-266.8509 607.7858,-229.9307 658,-190 686.3425,-167.4619 714.8841,-137.2922 733.7957,-116.0045"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="736.5806,-118.1376 740.5518,-108.3152 731.322,-113.5173 736.5806,-118.1376"/>
+</g>
+<!-- 4->5 -->
+<g id="edge9" class="edge">
+<title>4->5</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M612,-279.7351C612,-250.8541 612,-205.2198 612,-180.0896"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="612" cy="-283.7623" rx="4" ry="4"/>
+</g>
+<!-- 4->6 -->
+<g id="edge8" class="edge">
+<title>4->6</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M625.3853,-280.468C636.6169,-257.5116 651.7909,-222.5014 658,-190 662.6703,-165.5532 662.6703,-158.4468 658,-134 651.089,-97.8245 633.0717,-58.541 621.7462,-36.23"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="623.5304" cy="-284.19" rx="4" ry="4"/>
+</g>
+<!-- 5->7 -->
+<g id="edge10" class="edge">
+<title>5->7</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M655.7235,-140.1383C676.2619,-129.869 700.45,-117.775 719.924,-108.038"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="651.915" cy="-142.0425" rx="4" ry="4"/>
+</g>
+<!-- 6->7 -->
+<g id="edge11" class="edge">
+<title>6->7</title>
+<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M655.7235,-39.8617C676.2619,-50.131 700.45,-62.225 719.924,-71.962"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="651.915" cy="-37.9575" rx="4" ry="4"/>
+</g>
+<!-- T7 -->
+<g id="node9" class="node">
+<title>T7</title>
+<text text-anchor="start" x="702" y="-237.8" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">final, single</text>
+<text text-anchor="start" x="718.5" y="-223.8" font-family="mono" font-style="italic" font-size="14.00" fill="#000000">successor</text>
+</g>
+<!-- T7->7 -->
+<g id="edge12" class="edge">
+<title>T7->7</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M756,-215.7623C756,-191.201 756,-147.2474 756,-118.3541"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="759.5001,-118.0896 756,-108.0896 752.5001,-118.0897 759.5001,-118.0896"/>
+</g>
+</g>
+</svg>
--- a/docs/sharing.rst Mon Nov 11 03:22:09 2019 +0700
+++ b/docs/sharing.rst Mon Nov 11 03:40:20 2019 +0700
@@ -160,7 +160,13 @@
At this point, ``dev-repo`` and ``test-repo`` have the same changesets
in the same phases:
- [figure SG01: rev 0:0dc9 public, rev 1:f649 draft, same on both repos]
+.. figure:: figures/figure-sg01-ab.svg
+
+ Figure 1 a: ``dev-repo`` has rev 0:0dc9 public, rev 1:f649 draft
+
+.. figure:: figures/figure-sg01-ab.svg
+
+ Figure 1 b: the same exact picture in ``test-repo``
(You may notice a change in notation from the user guide: now
changesets are labelled with their revision number and the first four
@@ -198,7 +204,14 @@
obsolete in ``test-repo``, having been replaced by revision 2:96d8 and then by
3:522d—but ``dev-repo`` knows nothing of these recent developments.
- [figure SG02: test-repo has rev 0:0dc9 public, rev 1:f649 and 2:96d8 obsolete, rev 3:522d draft; dev-repo same as in SG01]
+.. figure:: figures/figure-sg01-ab.svg
+
+ Figure 2 a: ``dev-repo`` same as in Figure 01 a
+
+.. figure:: figures/figure-sg02-b.svg
+
+ Figure 2 b: ``test-repo`` has rev 0:0dc9 public, revs 1:f649 and 2:96d8
+ obsolete, rev 3:522d draft
Let's resynchronize::
@@ -218,7 +231,10 @@
2:96d8, because it is hidden. Push and pull transfer obsolescence
markers between repositories, but they do not transfer hidden changesets.
- [figure SG03: dev-repo grows new rev 2:522d, marks 1:f649 obsolete]
+.. figure:: figures/figure-sg03.svg
+
+ Figure 3: ``dev-repo`` receives rev 2:522d, 1:f649 is now obsolete like in
+ ``test-repo``
Because of this deliberately incomplete synchronization, revision
numbers in ``test-repo`` and ``dev-repo`` are no longer consistent. We
@@ -243,7 +259,13 @@
opposite direction. Figure 4 shows the two repositories after amending
in ``dev-repo`` and pushing to ``test-repo``.
- [figure SG04: each repo has one temporary amend commit, but they're different in each one]
+.. figure:: figures/figure-sg04-a.svg
+
+ Figure 4 a: in ``dev-repo`` the extra amend commit is 3:e42b
+
+.. figure:: figures/figure-sg04-b.svg
+
+ Figure 4 b: and in ``test-repo`` it is 2:96d8
Let's hop over to ``test-repo`` to test the more elegant fix::
@@ -269,7 +291,9 @@
``dev-repo`` or ``test-repo``. Neither of our missteps nor our amendments
are publicly visible, just the final, beautifully polished changeset:
- [figure SG05: public repo with rev 0:0dc9, 1:7b49, both public]
+.. figure:: figures/figure-sg05.svg
+
+ Figure 5: in ``public`` repo with revs 0:0dc9 and 1:7b49, both public
There is one important step left to do. Because we pushed from
``test-repo`` to ``public``, the pushed changeset is in *public* phase
@@ -402,7 +426,10 @@
Figure 6 shows the state of the ``review`` repository at this point.
- [figure SG06: rev 2:4e96 is Alice's obsolete v1, rev 3:3363 is her v2; both children of rev 1:7b49]
+.. figure:: figures/figure-sg06.svg
+
+ Figure 6: rev 2:4e96 is Alice's obsolete v1, rev 3:3363 is her v2; both
+ children of rev 1:7b49
After a busy morning of bug fixing, Alice stops for lunch. Let's see
what Bob has been up to.
@@ -466,7 +493,15 @@
Figure 7 shows the result of Bob's work in both ``review`` and
``public``.
- [figure SG07: review includes Alice's draft work on bug 15, as well as Bob's v1, v2, and v3 changes for feature X: v1 and v2 obsolete, v3 public. public contains only the final, public implementation of feature X]
+.. figure:: figures/figure-sg07-a.svg
+
+ Figure 7 a: ``review`` includes Alice's draft work on bug 15, as well as
+ Bob's v1, v2, and v3 changes for feature X: v1 and v2 obsolete, v3 public
+
+.. figure:: figures/figure-sg07-b.svg
+
+ Figure 7 b: ``public`` contains only the final, public implementation of
+ feature X
Incidentally, it's important that Bob push to ``public`` *before*
``review``. If he pushed to ``review`` first, then revision 6:540b
@@ -523,7 +558,14 @@
The result, in both ``review`` and ``public`` repositories, is shown
in figure 8.
- [figure SG08: review shows v1 and v2 of Alice's fix, then v1, v2, v3 of Bob's feature, finally Alice's fix rebased onto Bob's. public just shows the final public version of each changeset]
+.. figure:: figures/figure-sg08-a.svg
+
+ Figure 8 a: ``review`` shows v1 and v2 of Alice's fix, then v1, v2, v3 of
+ Bob's feature, finally Alice's fix rebased onto Bob's
+
+.. figure:: figures/figure-sg08-b.svg
+
+ Figure 8 b: ``public`` just shows the final public version of each changeset
Getting into trouble with shared mutable history
------------------------------------------------
@@ -627,7 +669,11 @@
Figure 9 shows the situation in Bob's repository.
- [figure SG09: Bob's repo with 2 heads for the 2 content-divergent changesets, 5:541f and 6:e3a5; wc is at 5:541f; both are successors of obsolete 4:b2be, hence divergence]
+.. figure:: figures/figure-sg09.svg
+
+ Figure 9: Bob's repo with 2 heads for the 2 content-divergent changesets,
+ 5:541f and 6:e3a5; wc is at 5:541f; both are successors of obsolete 4:b2be,
+ hence divergence
Now we need to get out of trouble. As usual, the answer is to evolve
history. ::