--- a/CHANGELOG Sat Jun 01 02:30:14 2019 +0200
+++ b/CHANGELOG Tue Jun 04 11:08:44 2019 +0200
@@ -1,6 +1,24 @@
Changelog
=========
+8.6.0 - in progress
+-------------------
+
+ * evolve: preserve the working directory after resolving instability (BC)
+ (use `hg next` or `hg evolve --update` to get the old behavior)
+ * evolve: evolve all relevant revision by default (BC)
+ (use --no-all to evolve only one)
+ * evolve: drop compatibility with 4.4
+ * evolve: reinstalled compatibility with narrow repositories,
+ * evolve: use "unstable" instead of "troubled"
+ * evolve: run multiple stabilisation in the same transaction
+ * evolve: improve users merging during content-divergence
+ * obsdiscovery: drop support for deprecated discovery protocol `obshash`
+ (Make sure your servers are configured to use the obshashrange one.
+ It is available in evolve 7.2 and above.)
+ * topic: drop the b# alias. It conflicted with normal hashes.
+ * topic: add a `experimental.topic.allow-publish` option (default: True)
+
8.5.1 -- 2019-04-23
-------------------
--- a/docs/concepts.rst Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/concepts.rst Tue Jun 04 11:08:44 2019 +0200
@@ -92,8 +92,8 @@
think of the traditional parent/child DAG as the first derivative of
your source code, and the obsolescence DAG as the second derivative.)
-Troubled changesets (unstable, bumped, divergent)
--------------------------------------------------
+Unstable changesets (orphan, phase-divergent, content-divergent)
+----------------------------------------------------------------
Evolving history can introduce problems that need to be solved. For
example, if you prune a changeset *P* but not its descendants, those
@@ -102,7 +102,7 @@
at the same time. But Mercurial does not push obsolete changesets like
*P*, so it cannot push the descendants of *P*. Any non-obsolete
changeset that is a descendant of an obsolete changeset is said to be
-*unstable*.
+an *orphan*.
[diagram: obsolete cset with non-obsolete descendant]
@@ -116,7 +116,7 @@
phase and therefore mutable. So Bob amends *C*, which marks it
obsolete and replaces it with *C'*. When he is back online and pulls
from the public repository, Mercurial learns that *C* is public, which
-means it cannot be obsolete. We say that *C'* is *bumped*, since it is
+means it cannot be obsolete. We say that *C'* is *phase-divergent*, since it is
the successor of a public changeset.
.. _`share mutable history`: sharing.html
@@ -125,25 +125,25 @@
two people have bought tickets for the same seat on a plane and they
both show up at the airport, only one of them gets on the plane. The
passenger who is left behind in the airport terminal has been
-"bumped".)
+"phase-divergent".)
The third sort of trouble is when Alice and Bob both amend the same
changeset *C* to have different successors. When this happens, the
-successors are both called *divergent* (unless one of them is in
-public phase; only mutable changesets are divergent).
+successors are both called *content-divergent* (unless one of them is in
+public phase; only mutable changesets are content-divergent).
-The collective term for unstable, bumped, and divergent changeset is
-*troubled*::
+The collective term for orphan, phase-divergent, and content-divergent
+changeset is *unstable*::
- troubled = unstable ∪ bumped ∪ divergent
+ unstable = orphan ∪ phase-divergent ∪ content-divergent
-It is possible for a changeset to be in any of the troubled categories
-at the same time: it might be unstable and divergent, or bumped and
-divergent, or whatever.
+It is possible for a changeset to be in any of the unstable categories
+at the same time: it might be an orphan and content-divergent, or
+phase-divergent and content-divergent, or whatever.
- [diagram: Venn diagram of troubled changesets, showing overlap]
+ [diagram: Venn diagram of unstable changesets, showing overlap]
-The presence of troubled changesets indicates the need to run ``hg
+The presence of unstable changesets indicates the need to run ``hg
evolve``.
Hidden (and visible) changesets
@@ -192,7 +192,7 @@
hidden = hideable ∖ ancestors((repo ∖ hideable) ∪ blockers)
This will probably be clearer with a worked example. First, here's a
-repository with some obsolete changesets, some troubled changesets,
+repository with some obsolete changesets, some unstable changesets,
one bookmark, a working copy, and some hidden changesets::
x-x
--- a/docs/evolve-faq.rst Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/evolve-faq.rst Tue Jun 04 11:08:44 2019 +0200
@@ -138,20 +138,20 @@
You can still use rebase to move a whole segment of the changeset graph together.
.. warning:: Beware that rebasing changesets already obsolete will likely result in
- divergent versions of the changesets.
+ content-divergent versions of the changesets.
-Resolve history troubles: ``evolve``
-------------------------------------
+Resolve history instability: ``evolve``
+---------------------------------------
When you rewrite (amend) a changeset with children without rewriting
-those children you create *unstable* changesets and *suspended
+those children you create *orphan* changesets and *suspended
obsolete* changesets.
When you are finished amending a given changeset, you will want to
declare it stable, in other words rebase its former descendants on its
newest version.
-You can also use evolve to solve `bumped` and `divergent` changeset/
+You can also use evolve to solve `phase-divergent` and `content-divergent` changeset/
Fix my history afterward: ``prune -n``
@@ -170,7 +170,7 @@
::
[alias]
- odiff = diff --rev 'limit(precursors(.),1)' --rev .
+ odiff = diff --rev 'limit(predecessors(.),1)' --rev .
View obsolete markers
---------------------
--- a/docs/figures/figure-ug01.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug01.svg Tue Jun 04 11:08:44 2019 +0200
@@ -15,7 +15,7 @@
height="150"
id="svg2"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug01.svg">
<defs
id="defs4">
@@ -180,8 +180,10 @@
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
- originx="0.078084198px"
- originy="-2924.5747px" />
+ originx="0.078084198"
+ originy="-2924.5747"
+ spacingx="1"
+ spacingy="1" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -211,13 +213,12 @@
id="rect2987"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217"
y="252.23067"
x="390.00699"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
- style="stroke:none"
+ style="font-size:12px;line-height:1.25;font-family:sans-serif;stroke:none"
y="252.23067"
x="390.00699"
id="tspan5219"
@@ -235,19 +236,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8"
y="13.894781"
x="56.792801"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156"
sodipodi:role="line"
x="56.792801"
- y="13.894781">1</tspan></text>
+ y="13.894781"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">1</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
d="m 21.981735,9.6755275 38.518266,4.2e-6"
id="path8263"
inkscape:connector-type="polyline"
@@ -258,16 +259,16 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="46.543751"
y="42.826393"
id="text5217-8-0"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
sodipodi:role="line"
id="tspan8594"
x="46.543751"
- y="42.826393">hg commit --amend</tspan></text>
+ y="42.826393"
+ style="font-size:12px;line-height:1.25;font-family:monospace">hg commit --amend</tspan></text>
<path
style="fill:none;stroke:#808080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 36.655932,74.035228 3.649333,6.320665 3.711171,-6.427764"
@@ -298,13 +299,12 @@
id="rect2987-41"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-7"
y="252.23067"
x="390.00699"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
- style="stroke:none"
+ style="font-size:12px;line-height:1.25;font-family:sans-serif;stroke:none"
y="252.23067"
x="390.00699"
id="tspan5219-3"
@@ -322,16 +322,16 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-7"
y="121.11791"
x="65.68634"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="121.11791"
x="65.68634"
id="tspan3914"
- sodipodi:role="line">1'</tspan></text>
+ sodipodi:role="line"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">1'</tspan></text>
</g>
<g
id="g3969"
@@ -355,20 +355,20 @@
style="fill:none;stroke:#686868;stroke-width:0.68990517;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
sodipodi:type="star" />
<text
- sodipodi:linespacing="125%"
id="text3957"
y="84.170212"
x="69.021271"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="84.170212"
x="69.021271"
id="tspan3959"
- sodipodi:role="line">poof!</tspan></text>
+ sodipodi:role="line"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">poof!</tspan></text>
</g>
<path
- style="fill:none;stroke:url(#linearGradient3986);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 1;stroke-dashoffset:0;marker-mid:none;marker-end:none"
- d="m 21.990865,103.39791 57.925771,-0.005"
+ style="fill:none;stroke:url(#linearGradient3986);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;marker-mid:none;marker-end:none"
+ d="m 21.990865,103.39783 57.926859,-0.006"
id="path3974"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -388,13 +388,13 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="46.760448"
y="58.872295"
- id="text5223"
- sodipodi:linespacing="125%"><tspan
+ id="text5223"><tspan
sodipodi:role="line"
id="tspan5227"
x="46.760448"
- y="58.872295">(destructive, not using evolve)</tspan></text>
+ y="58.872295"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">(destructive, not using evolve)</tspan></text>
</svg>
--- a/docs/figures/figure-ug02.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug02.svg Tue Jun 04 11:08:44 2019 +0200
@@ -15,7 +15,7 @@
height="250"
id="svg2"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug02.svg">
<defs
id="defs4">
@@ -206,14 +206,14 @@
inkscape:pageshadow="2"
inkscape:zoom="3.7318511"
inkscape:cx="113.8845"
- inkscape:cy="138.3052"
+ inkscape:cy="132.4403"
inkscape:document-units="px"
inkscape:current-layer="svg2"
showgrid="false"
- inkscape:window-width="974"
- inkscape:window-height="1048"
- inkscape:window-x="104"
- inkscape:window-y="103"
+ inkscape:window-width="1814"
+ inkscape:window-height="950"
+ inkscape:window-x="68"
+ inkscape:window-y="45"
inkscape:window-maximized="0"
showguides="false"
inkscape:snap-global="false"
@@ -228,8 +228,10 @@
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
- originx="0.078088198px"
- originy="-2937.8154px" />
+ originx="0.078088198"
+ originy="-2937.8154"
+ spacingx="1"
+ spacingy="1" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -259,13 +261,12 @@
id="rect2987"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217"
y="252.23067"
x="390.00699"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
- style="stroke:none"
+ style="font-size:12px;line-height:1.25;font-family:sans-serif;stroke:none"
y="252.23067"
x="390.00699"
id="tspan5219"
@@ -283,19 +284,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8"
y="13.894781"
x="56.792801"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156"
sodipodi:role="line"
x="56.792801"
- y="13.894781">1</tspan></text>
+ y="13.894781"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">1</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
d="m 21.981735,10.916236 38.51827,1e-6"
id="path8263"
inkscape:connector-type="polyline"
@@ -315,13 +316,12 @@
id="rect2987-41"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-7"
y="252.23067"
x="390.00699"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
- style="stroke:none"
+ style="font-size:12px;line-height:1.25;font-family:sans-serif;stroke:none"
y="252.23067"
x="390.00699"
id="tspan5219-3"
@@ -339,19 +339,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-7"
y="144.84122"
x="67.447083"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="144.84122"
x="67.447083"
id="tspan3914"
- sodipodi:role="line">3</tspan></text>
+ sodipodi:role="line"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">2</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-6);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-6)"
d="m 18.903026,154.7407 44.684935,52.70603"
id="path5012"
inkscape:connector-type="polyline"
@@ -365,27 +365,27 @@
transform="translate(1.9995778e-6,23.240701)">
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-0"
y="42.826412"
x="46.543755"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="42.826412"
x="46.543755"
id="tspan8594"
- sodipodi:role="line">hg commit --amend</tspan></text>
+ sodipodi:role="line"
+ style="font-size:12px;line-height:1.25;font-family:monospace">hg commit --amend</tspan></text>
<text
- sodipodi:linespacing="125%"
id="text5223"
y="54.872299"
x="46.760452"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="54.872299"
x="46.760452"
id="tspan5227"
- sodipodi:role="line">(safe, using evolve)</tspan></text>
+ sodipodi:role="line"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">(safe, using evolve)</tspan></text>
</g>
<g
id="g4022"
@@ -399,19 +399,19 @@
style="fill:none;stroke:#404040;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-9"
y="107.76683"
x="67.426567"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#404040;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#404040;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-7"
sodipodi:role="line"
x="67.426567"
- y="107.76683">1</tspan></text>
+ y="107.76683"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">1</tspan></text>
</g>
<path
- style="fill:none;stroke:#404040;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;marker-end:url(#Arrow2Mend);display:inline"
+ style="display:inline;fill:none;stroke:#404040;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.94117647;marker-end:url(#Arrow2Mend)"
d="m 21.991109,145.71407 38.508895,0"
id="path8263-2"
inkscape:connector-type="polyline"
@@ -422,54 +422,18 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="122.10091"
y="140.49216"
- id="text4115"
- sodipodi:linespacing="125%"><tspan
+ id="text4115"><tspan
sodipodi:role="line"
id="tspan4117"
x="122.10091"
- y="140.49216" /></text>
- <g
- id="g5472"
- transform="translate(1.9995778e-6,1.240699)">
- <rect
- y="135.44673"
- x="120.5"
- height="18.05327"
- width="21.481739"
- id="rect2987-4-0-0"
- style="fill:none;stroke:#404040;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" />
- <text
- inkscape:transform-center-x="2.6044813"
- transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
- id="text5217-8-9-2"
- y="148.84123"
- x="127.4267"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#404040;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
- xml:space="preserve"><tspan
- id="tspan6156-7-4"
- sodipodi:role="line"
- x="127.4267"
- y="148.84123">2</tspan></text>
- </g>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
- x="140.76923"
- y="136.65099"
- id="text4119"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan4121"
- x="140.76923"
- y="136.65099"
- style="font-size:8px;font-weight:bold;-inkscape-font-specification:Sans Bold">T</tspan></text>
+ y="140.49216"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif"> </tspan></text>
<path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#DotM)"
- d="m 71.240874,154.7407 0,52.70603"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 3;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
+ d="m 71.240874,154.7407 v 52.70603"
id="path4123"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -479,56 +443,37 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
- x="175.07857"
- y="112.16577"
- id="text4787"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- x="175.07857"
- y="112.16577"
- id="tspan4791">temporary</tspan><tspan
- sodipodi:role="line"
- x="175.07857"
- y="122.16577"
- id="tspan4795">amend</tspan><tspan
- sodipodi:role="line"
- x="175.07857"
- y="132.16577"
- id="tspan4797">commit</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="51.716301"
y="112.74194"
- id="text4799"
- sodipodi:linespacing="125%"><tspan
+ id="text4799"><tspan
sodipodi:role="line"
id="tspan4801"
x="51.716301"
- y="112.74194">obsolete (and hidden)</tspan></text>
+ y="112.74194"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">obsolete (and hidden)</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="94.602974"
y="171.26965"
- id="text4803"
- sodipodi:linespacing="125%"><tspan
+ id="text4803"><tspan
sodipodi:role="line"
id="tspan4805"
x="94.602974"
- y="171.26965">precursor</tspan></text>
+ y="171.26965"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">predecessor</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="94.461372"
y="189.68568"
- id="text4807"
- sodipodi:linespacing="125%"><tspan
+ id="text4807"><tspan
sodipodi:role="line"
id="tspan4809"
x="94.461372"
- y="189.68568">successor</tspan></text>
+ y="189.68568"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">successor</tspan></text>
<path
style="fill:none;stroke:#7d7d7d;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="M 92.837054,168.99918 C 80.990247,168.9329 79.499863,165.60079 77.196029,156.38545"
@@ -540,20 +485,10 @@
id="path5263"
inkscape:connector-curvature="0" />
<path
- style="fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
- d="m 173.06037,115.51697 c -10.90807,9.681 -3.90454,20.30854 -25.22746,18.66832"
- id="path5689"
- inkscape:connector-curvature="0" />
- <path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow2Mend-2);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 97.377997,116.02152 c 1.765752,12.09244 -25.911587,2.23195 -29.768403,17.65922"
id="path5893"
inkscape:connector-curvature="0" />
- <path
- style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow2Mend-2);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 99.093394,115.78744 c -1.76575,12.09244 25.911586,2.23195 29.768406,17.65922"
- id="path5893-7"
- inkscape:connector-curvature="0" />
<g
id="g6493"
transform="translate(1.9995778e-6,1.240701)">
@@ -577,14 +512,4 @@
inkscape:connector-curvature="0" />
</g>
</g>
- <path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker-end:url(#Arrow2Mend-2)"
- d="m 81.981743,145.71407 38.518257,0"
- id="path3069"
- inkscape:connector-type="polyline"
- inkscape:connector-curvature="0"
- inkscape:connection-start="#g4022"
- inkscape:connection-start-point="d4"
- inkscape:connection-end="#g5472"
- inkscape:connection-end-point="d4" />
</svg>
--- a/docs/figures/figure-ug03.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug03.svg Tue Jun 04 11:08:44 2019 +0200
@@ -15,7 +15,7 @@
height="150"
id="svg2"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug03.svg">
<defs
id="defs4">
@@ -172,8 +172,10 @@
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
- originx="0.078084198px"
- originy="-2924.5747px" />
+ originx="0.078084198"
+ originy="-2924.5747"
+ spacingx="1"
+ spacingy="1" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -206,17 +208,16 @@
y="0.64889121" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="7.4264359"
y="14.043668"
id="text5217"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
sodipodi:role="line"
id="tspan5219"
x="7.4264359"
y="14.043668"
- style="stroke:none">3</tspan></text>
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif;stroke:none">3</tspan></text>
</g>
<g
id="g6612">
@@ -229,39 +230,39 @@
y="0.64889765" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="67.426567"
y="14.043674"
id="text5217-8"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
y="14.043674"
x="67.426567"
sodipodi:role="line"
- id="tspan3900">4</tspan></text>
+ id="tspan3900"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">4</tspan></text>
</g>
<path
inkscape:connector-curvature="0"
inkscape:connector-type="polyline"
id="path8263"
d="m 21.981735,9.6755275 38.518266,4.2e-6"
- style="fill:none;stroke:#000000;stroke-width:0.99999791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline" />
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
</g>
<g
id="g6397"
transform="translate(1.2139669,17.353636)">
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-0"
y="53.910118"
x="46.543751"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="53.910118"
x="46.543751"
id="tspan8594"
- sodipodi:role="line">hg prune .</tspan></text>
+ sodipodi:role="line"
+ style="font-size:12px;line-height:1.25;font-family:monospace">hg prune .</tspan></text>
<g
id="g6372">
<path
@@ -296,14 +297,13 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-9"
y="115.1729"
x="7.4264359"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan3904"
- style="stroke:none"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif;stroke:none"
y="115.1729"
x="7.4264359"
sodipodi:role="line">3</tspan></text>
@@ -319,20 +319,20 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999791,1.99999583;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-2"
y="115.1729"
x="67.426567"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan3908"
sodipodi:role="line"
x="67.426567"
- y="115.1729">4</tspan></text>
+ y="115.1729"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">4</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline"
- d="m 21.981736,110.80498 38.518268,0"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="M 21.981736,110.80498 H 60.500004"
id="path8263-2"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -342,48 +342,47 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="120.84515"
y="108.62753"
- id="text4799"
- sodipodi:linespacing="100%"><tspan
+ id="text4799"><tspan
sodipodi:role="line"
id="tspan4801"
x="120.84515"
y="108.62753"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans Italic">obsolete,</tspan><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;writing-mode:lr-tb;text-anchor:start">obsolete,</tspan><tspan
sodipodi:role="line"
x="120.84515"
y="118.62753"
id="tspan4155"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans Italic">hidden,</tspan><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;writing-mode:lr-tb;text-anchor:start">hidden,</tspan><tspan
sodipodi:role="line"
x="120.84515"
y="128.62753"
id="tspan4157"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans Italic">no successors</tspan></text>
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;writing-mode:lr-tb;text-anchor:start">no successors</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="87.810272"
y="8.7751856"
- id="text4353"
- sodipodi:linespacing="125%"><tspan
+ id="text4353"><tspan
sodipodi:role="line"
id="tspan4355"
x="87.810272"
- y="8.7751856">working dir</tspan></text>
+ y="8.7751856"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">working dir</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="20.528839"
y="144.07831"
- id="text4353-8"
- sodipodi:linespacing="125%"><tspan
+ id="text4353-8"><tspan
sodipodi:role="line"
id="tspan4355-6"
x="20.528839"
- y="144.07831">working dir</tspan></text>
+ y="144.07831"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">working dir</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;marker-end:url(#Arrow2Mend-7)"
d="m 20.030453,140.89525 c -8.427525,-2.11036 -7.688456,-10.62543 -7.688456,-18.00718"
--- a/docs/figures/figure-ug04.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug04.svg Tue Jun 04 11:08:44 2019 +0200
@@ -15,7 +15,7 @@
height="205"
id="svg2"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug04.svg">
<defs
id="defs4">
@@ -228,8 +228,10 @@
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
- originx="0.078090195px"
- originy="-3032.6372px" />
+ originx="0.078090195"
+ originy="-3032.6372"
+ spacingx="1"
+ spacingy="1" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -260,13 +262,12 @@
style="fill:none;stroke:#000000;stroke-width:0.99999779;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999978,1.0000022)"
- sodipodi:linespacing="125%"
id="text5217"
y="14.714343"
x="7.426435"
- style="font-size:11.9999733px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
- style="stroke:none"
+ style="font-size:11.9999733px;line-height:1.25;font-family:sans-serif;stroke:none"
y="14.714343"
x="7.426435"
id="tspan5219"
@@ -284,19 +285,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999779;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999978,1.0000022)"
- sodipodi:linespacing="125%"
id="text5217-8"
y="14.714343"
x="67.426567"
- style="font-size:11.9999733px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156"
sodipodi:role="line"
x="67.426567"
- y="14.714343">5</tspan></text>
+ y="14.714343"
+ style="font-size:11.9999733px;line-height:1.25;font-family:sans-serif">5</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
d="m 21.981731,10.168036 38.518259,10e-7"
id="path8263"
inkscape:connector-type="polyline"
@@ -316,16 +317,15 @@
y="238.83586" />
<text
xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="390.00699"
y="252.23067"
- id="text5217-7"
- sodipodi:linespacing="125%"><tspan
+ id="text5217-7"><tspan
sodipodi:role="line"
id="tspan5219-3"
x="390.00699"
y="252.23067"
- style="stroke:none">3</tspan></text>
+ style="font-size:12px;line-height:1.25;font-family:sans-serif;stroke:none">3</tspan></text>
</g>
</g>
<g
@@ -343,20 +343,20 @@
y="131.44673" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="67.447083"
y="144.84122"
id="text5217-8-7"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
sodipodi:role="line"
id="tspan3914"
x="67.447083"
- y="144.84122">6</tspan></text>
+ y="144.84122"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">6</tspan></text>
</g>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-6);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-6)"
d="m 18.903021,117.9925 44.684942,52.70603"
id="path5012"
inkscape:connector-type="polyline"
@@ -380,74 +380,74 @@
y="94.372253" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#404040;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#404040;fill-opacity:1;stroke:none"
x="67.426567"
y="107.76683"
id="text5217-8-9"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
y="107.76683"
x="67.426567"
sodipodi:role="line"
- id="tspan6156-7">5</tspan></text>
+ id="tspan6156-7"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">5</tspan></text>
</g>
</g>
<path
- style="fill:none;stroke:#404040;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;marker-end:url(#Arrow2Mend);display:inline"
- d="m 21.991099,108.96587 38.508907,0"
+ style="display:inline;fill:none;stroke:#404040;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.94117647;marker-end:url(#Arrow2Mend)"
+ d="M 21.991099,108.96587 H 60.500006"
id="path8263-2"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="122.10089"
y="139.74393"
- id="text4115"
- sodipodi:linespacing="125%"><tspan
+ id="text4115"><tspan
sodipodi:role="line"
id="tspan4117"
x="122.10089"
- y="139.74393" /></text>
+ y="139.74393"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif"> </tspan></text>
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;marker-start:url(#DotM)"
- d="m 71.240876,117.9925 0,52.70603"
+ style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
+ d="m 71.240876,117.9925 v 52.70603"
id="path4123"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="131.67636"
y="97.973274"
- id="text4799"
- sodipodi:linespacing="125%"><tspan
+ id="text4799"><tspan
sodipodi:role="line"
id="tspan4801"
x="131.67636"
- y="97.973274">obsolete, hidden</tspan></text>
+ y="97.973274"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">obsolete, hidden</tspan></text>
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="94.602959"
y="134.52141"
- id="text4803"
- sodipodi:linespacing="125%"><tspan
+ id="text4803"><tspan
sodipodi:role="line"
id="tspan4805"
x="94.602959"
- y="134.52141">precursor</tspan></text>
+ y="134.52141"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">predecessor</tspan></text>
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="94.461357"
y="152.93744"
- id="text4807"
- sodipodi:linespacing="125%"><tspan
+ id="text4807"><tspan
sodipodi:role="line"
id="tspan4809"
x="94.461357"
- y="152.93744">successor</tspan></text>
+ y="152.93744"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">successor</tspan></text>
<path
style="fill:none;stroke:#7d7d7d;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="M 92.83703,132.25098 C 80.990226,132.18468 79.499843,128.85259 77.19601,119.63725"
@@ -460,34 +460,36 @@
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="131.8273"
y="14.09236"
- id="text4799-8"
- sodipodi:linespacing="125%"><tspan
+ id="text4799-8"><tspan
sodipodi:role="line"
id="tspan4801-4"
x="131.8273"
- y="14.09236">working dir (clean)</tspan></text>
+ y="14.09236"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">working dir (clean)</tspan></text>
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="133.3548"
y="177.91992"
- id="text4799-8-1"
- sodipodi:linespacing="125%"><tspan
+ id="text4799-8-1"><tspan
sodipodi:role="line"
x="133.3548"
y="177.91992"
- id="tspan3129">working dir</tspan><tspan
+ id="tspan3129"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">working dir</tspan><tspan
sodipodi:role="line"
x="133.3548"
y="190.41992"
- id="tspan3137">(with uncommitted</tspan><tspan
+ id="tspan3137"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">(with uncommitted</tspan><tspan
sodipodi:role="line"
x="133.3548"
y="202.91992"
- id="tspan3135">changes to f1 f2 ...)</tspan></text>
+ id="tspan3135"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">changes to f1 f2 ...)</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow2Mend-2);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 127.70873,11.814007 C 109.60365,21.89832 105.56713,4.2966494 86.402349,8.4033887"
@@ -503,18 +505,18 @@
transform="translate(1.9967556e-6,-0.17817035)">
<text
transform="scale(0.9999978,1.0000022)"
- sodipodi:linespacing="125%"
id="text5217-8-0"
y="58.841717"
x="46.92271"
- style="font-size:11.99999809px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="58.841717"
x="46.92271"
id="tspan8594"
- sodipodi:role="line">hg uncommit <tspan
+ sodipodi:role="line"
+ style="font-size:11.99999809px;line-height:1.25;font-family:monospace">hg uncommit <tspan
id="tspan3131"
- style="font-style:italic">f1 f2 ...</tspan></tspan></text>
+ style="font-style:italic;font-family:monospace">f1 f2 ...</tspan></tspan></text>
<g
transform="translate(-0.59241834,4.9316169)"
id="g6372">
--- a/docs/figures/figure-ug05.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug05.svg Tue Jun 04 11:08:44 2019 +0200
@@ -15,7 +15,7 @@
height="250"
id="svg2"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug05.svg">
<defs
id="defs4">
@@ -284,8 +284,10 @@
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
- originx="0.078088198px"
- originy="-2937.8154px" />
+ originx="0.078088198"
+ originy="-2937.8154"
+ spacingx="1"
+ spacingy="1" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -314,13 +316,12 @@
id="rect2987"
style="fill:none;stroke:#000000;stroke-width:0.99999946;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217"
y="14.841532"
x="7.4264469"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
- style="stroke:none"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif;stroke:none"
y="14.841532"
x="7.4264469"
id="tspan5219"
@@ -340,20 +341,20 @@
y="1.8896017" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="67.426575"
y="15.284375"
id="text5217-8"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
y="15.284375"
x="67.426575"
sodipodi:role="line"
- id="tspan6156">7</tspan></text>
+ id="tspan6156"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">7</tspan></text>
</g>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999946px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999946px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
d="m 21.981805,10.473365 38.518392,1e-6"
id="path8263"
inkscape:connector-type="polyline"
@@ -370,13 +371,12 @@
style="fill:none;stroke:#000000;stroke-width:1.0000037;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(1.0000037,0.99999628)"
- sodipodi:linespacing="125%"
id="text5217-7"
y="150.08279"
x="7.3916588"
- style="font-size:12.00004482px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
- style="stroke:none"
+ style="font-size:12.00004482px;line-height:1.25;font-family:sans-serif;stroke:none"
y="150.08279"
x="7.3916588"
id="tspan5219-3"
@@ -394,19 +394,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-7"
y="232.20978"
x="112.22823"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="232.20978"
x="112.22823"
id="tspan3914"
- sodipodi:role="line">10</tspan></text>
+ sodipodi:role="line"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">10</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-6);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-6)"
d="m 18.241201,159.5 45.999463,59.31546"
id="path5012"
inkscape:connector-type="polyline"
@@ -417,18 +417,18 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="122.10091"
y="140.49216"
- id="text4115"
- sodipodi:linespacing="125%"><tspan
+ id="text4115"><tspan
sodipodi:role="line"
id="tspan4117"
x="122.10091"
- y="140.49216" /></text>
+ y="140.49216"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif"> </tspan></text>
<path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
- d="m 71.240899,159.5 -2.6e-5,59.31546"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 3;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
+ d="m 71.305628,159.5 -0.05621,59.31546"
id="path4123"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -438,41 +438,41 @@
inkscape:connection-start-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="145.71631"
y="120.74194"
- id="text4799"
- sodipodi:linespacing="125%"><tspan
+ id="text4799"><tspan
sodipodi:role="line"
x="145.71631"
y="120.74194"
- id="tspan4866">obsolete, hidden precursors</tspan></text>
+ id="tspan4866"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">obsolete, hidden predecessors</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="140.08366"
y="221.99774"
- id="text4807"
- sodipodi:linespacing="125%"><tspan
+ id="text4807"><tspan
sodipodi:role="line"
id="tspan4809"
x="140.08366"
- y="221.99774">successor, working dir</tspan></text>
+ y="221.99774"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">successor, working dir</tspan></text>
<g
id="g4748"
transform="translate(66,4)">
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-0"
y="75.774689"
x="46.543758"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="75.774689"
x="46.543758"
id="tspan8594"
- sodipodi:role="line">hg fold 7</tspan></text>
+ sodipodi:role="line"
+ style="font-size:12px;line-height:1.25;font-family:monospace">hg fold 7</tspan></text>
<g
transform="translate(1.9995778e-6,1.240701)"
id="g6493">
@@ -511,16 +511,16 @@
y="1.8896017" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="67.426575"
y="15.284375"
id="text5217-8-72"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
y="15.284375"
x="67.426575"
sodipodi:role="line"
- id="tspan6156-9">8</tspan></text>
+ id="tspan6156-9"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">8</tspan></text>
</g>
</g>
<g
@@ -537,16 +537,16 @@
y="1.8896017" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="67.426575"
y="15.284375"
id="text5217-8-3"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
y="15.284375"
x="67.426575"
sodipodi:role="line"
- id="tspan6156-0">9</tspan></text>
+ id="tspan6156-0"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">9</tspan></text>
</g>
</g>
<path
@@ -561,7 +561,7 @@
inkscape:connection-end-point="d4" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
- d="m 141.98174,10.473366 38.51826,0"
+ d="M 141.98174,10.473366 H 180.5"
id="path3180"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -579,16 +579,16 @@
id="rect2987-4-7"
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.9999994, 2.99999821;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-1"
y="154.84146"
x="67.426483"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-7"
sodipodi:role="line"
x="67.426483"
- y="154.84146">7</tspan></text>
+ y="154.84146"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">7</tspan></text>
</g>
<g
id="g4842">
@@ -601,16 +601,16 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999791, 2.99999374;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72-7"
y="154.84122"
x="127.42651"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9-5"
sodipodi:role="line"
x="127.42651"
- y="154.84122">8</tspan></text>
+ y="154.84122"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">8</tspan></text>
</g>
<g
id="g4847">
@@ -623,19 +623,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999791, 2.99999374;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3-2"
y="154.84122"
x="187.42664"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0-8"
sodipodi:role="line"
x="187.42664"
- y="154.84122">9</tspan></text>
+ y="154.84122"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">9</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 81.981806,150.47337 38.518004,0"
id="path3178-7"
inkscape:connector-type="polyline"
@@ -645,8 +645,8 @@
inkscape:connection-end="#g4842"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
- d="m 141.98155,150.47337 38.51827,0"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
+ d="m 141.98155,150.47337 h 38.51827"
id="path3180-3"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -655,7 +655,7 @@
inkscape:connection-end="#g4847"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4448);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4448)"
d="M 21.981991,150.47336 60.5,150.47337"
id="path4542"
inkscape:connector-type="polyline"
@@ -665,7 +665,7 @@
inkscape:connection-end="#g4837"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 3;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="M 124.24048,159.5 78.241066,218.81546"
id="path4123-2"
inkscape:connector-type="polyline"
@@ -675,7 +675,7 @@
inkscape:connection-end="#g4533"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 3;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="M 180.49982,157.39844 81.981738,220.91702"
id="path4123-2-7"
inkscape:connector-type="polyline"
@@ -706,15 +706,15 @@
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="219.76105"
y="45.381439"
- id="text4799-8"
- sodipodi:linespacing="125%"><tspan
+ id="text4799-8"><tspan
sodipodi:role="line"
id="tspan4801-4"
x="219.76105"
- y="45.381439">working dir</tspan></text>
+ y="45.381439"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">working dir</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;marker-end:url(#marker4448)"
d="m 216.5322,43.418725 c -17.12038,-3.247846 -32.15429,-0.004 -25.47437,-18.707746"
--- a/docs/figures/figure-ug06.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug06.svg Tue Jun 04 11:08:44 2019 +0200
@@ -15,7 +15,7 @@
height="310"
id="svg2"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug06.svg">
<defs
id="defs4">
@@ -331,15 +331,15 @@
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2"
- inkscape:cx="124.00649"
+ inkscape:cx="126.00649"
inkscape:cy="153.46969"
inkscape:document-units="px"
inkscape:current-layer="svg2"
showgrid="false"
- inkscape:window-width="974"
- inkscape:window-height="1048"
- inkscape:window-x="48"
- inkscape:window-y="61"
+ inkscape:window-width="1814"
+ inkscape:window-height="950"
+ inkscape:window-x="77"
+ inkscape:window-y="62"
inkscape:window-maximized="0"
showguides="false"
inkscape:snap-global="false"
@@ -354,8 +354,10 @@
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
- originx="0.078088198px"
- originy="-2937.8154px" />
+ originx="0.078088198"
+ originy="-2937.8154"
+ spacingx="1"
+ spacingy="1" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -371,16 +373,16 @@
</metadata>
<text
xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="112.5439"
y="113.7746"
id="text5217-8-0"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
sodipodi:role="line"
id="tspan8594"
x="112.5439"
- y="113.7746">hg amend</tspan></text>
+ y="113.7746"
+ style="font-size:12px;line-height:1.25;font-family:monospace">hg amend</tspan></text>
<g
id="g6493"
transform="translate(63.844066,39.240701)">
@@ -418,16 +420,15 @@
y="35.446732" />
<text
xml:space="preserve"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="3.3424675"
y="48.84153"
- id="text5217"
- sodipodi:linespacing="125%"><tspan
+ id="text5217"><tspan
sodipodi:role="line"
id="tspan5219"
x="3.3424675"
y="48.84153"
- style="stroke:none">10</tspan></text>
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif;stroke:none">10</tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2987-4"
@@ -437,17 +438,17 @@
y="35.446732" />
<text
xml:space="preserve"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="63.497932"
y="48.84153"
- id="text5217-8"
- sodipodi:linespacing="125%"><tspan
+ id="text5217-8"><tspan
y="48.84153"
x="63.497932"
sodipodi:role="line"
- id="tspan6156">11</tspan></text>
+ id="tspan6156"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">11</tspan></text>
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999946px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999946px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
d="m 21.981805,44.473365 38.518386,10e-7"
id="path8263"
inkscape:connector-type="polyline"
@@ -466,13 +467,12 @@
style="fill:none;stroke:#000000;stroke-width:1.0000037;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(1.0000037,0.9999963)"
- sodipodi:linespacing="125%"
id="text5217-7"
y="154.84212"
x="3.3424876"
- style="font-size:12.00004482px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
- style="stroke:none"
+ style="font-size:12.00004482px;line-height:1.25;font-family:sans-serif;stroke:none"
y="154.84212"
x="3.3424876"
id="tspan5219-3"
@@ -487,18 +487,18 @@
y="252.81546" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="63.342594"
y="266.20969"
id="text5217-8-7"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
sodipodi:role="line"
id="tspan3914"
x="63.342594"
- y="266.20969">15</tspan></text>
+ y="266.20969"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">14</tspan></text>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-6);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-6)"
d="m 18.241201,193.5 45.999463,59.31546"
id="path5012"
inkscape:connector-type="polyline"
@@ -509,15 +509,15 @@
inkscape:connection-start-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="122.10091"
y="174.49216"
- id="text4115"
- sodipodi:linespacing="125%"><tspan
+ id="text4115"><tspan
sodipodi:role="line"
id="tspan4117"
x="122.10091"
- y="174.49216" /></text>
+ y="174.49216"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif"> </tspan></text>
<g
id="g3118"
transform="translate(0,34)">
@@ -530,16 +530,16 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72"
y="14.841505"
x="123.54487"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9"
sodipodi:role="line"
x="123.54487"
- y="14.841505">12</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">12</tspan></text>
</g>
<g
id="g3126"
@@ -553,19 +553,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3"
y="14.841505"
x="183.42488"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0"
sodipodi:role="line"
x="183.42488"
- y="14.841505">13</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">13</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 81.981997,44.473366 38.518003,0"
id="path3178"
inkscape:connector-type="polyline"
@@ -575,7 +575,7 @@
inkscape:connection-end="#g3118"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 141.98174,44.473366 38.51826,0"
id="path3180"
inkscape:connector-type="polyline"
@@ -585,7 +585,7 @@
inkscape:connection-end="#g3126"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4448);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4448)"
d="M 21.981991,184.65238 60.5,185.29435"
id="path4542"
inkscape:connector-type="polyline"
@@ -594,27 +594,30 @@
inkscape:connection-start-point="d4" />
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="86.768402"
y="12.367264"
- id="text4799-8"
- sodipodi:linespacing="125%"><tspan
+ id="text4799-8"><tspan
sodipodi:role="line"
id="tspan4801-4"
x="86.768402"
- y="12.367264">working dir</tspan></text>
+ y="12.367264"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">working dir</tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot3104"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
transform="translate(0,34)"><flowRegion
- id="flowRegion3106"><rect
+ id="flowRegion3106"
+ style="font-family:sans-serif"><rect
id="rect3108"
width="60.309383"
height="49.300529"
x="-25.368233"
- y="-22.34952" /></flowRegion><flowPara
- id="flowPara3110"></flowPara></flowRoot> <g
+ y="-22.34952"
+ style="font-family:sans-serif" /></flowRegion><flowPara
+ id="flowPara3110"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif"> </flowPara></flowRoot> <g
id="g5560"
transform="translate(0,34)">
<rect
@@ -625,16 +628,16 @@
id="rect2987-4-8"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 4;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-4"
y="154.84152"
x="63.497734"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-4"
sodipodi:role="line"
x="63.497734"
- y="154.84152">11</tspan></text>
+ y="154.84152"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">11</tspan></text>
</g>
<g
transform="translate(-2.0371355e-4,174)"
@@ -648,16 +651,16 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72-7"
y="14.841505"
x="123.54487"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9-7"
sodipodi:role="line"
x="123.54487"
- y="14.841505">12</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">12</tspan></text>
</g>
<g
transform="translate(-2.0371355e-4,174)"
@@ -671,19 +674,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3-9"
y="14.841505"
x="183.42488"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0-0"
sodipodi:role="line"
x="183.42488"
- y="14.841505">13</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">13</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 81.981806,184.47337 38.517994,0"
id="path3178-0"
inkscape:connector-type="polyline"
@@ -691,8 +694,8 @@
inkscape:connection-end="#g3118-0"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
- d="m 141.98154,184.47337 38.51826,0"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
+ d="M 141.98154,184.47337 H 180.4998"
id="path3180-2"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -701,7 +704,7 @@
inkscape:connection-end="#g3126-3"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 3;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="m 71.240899,193.5 -2.6e-5,59.31546"
id="path4123"
inkscape:connector-type="polyline"
@@ -710,30 +713,31 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="18.790892"
y="142.23888"
- id="text4799-8-6"
- sodipodi:linespacing="100%"><tspan
+ id="text4799-8-6"><tspan
sodipodi:role="line"
id="tspan4801-4-0"
x="18.790892"
- y="142.23888">obsolete</tspan><tspan
+ y="142.23888"
+ style="font-size:9.99999905px;line-height:1;font-family:sans-serif">obsolete</tspan><tspan
sodipodi:role="line"
x="18.790892"
y="152.23888"
- id="tspan4452">but visible</tspan></text>
+ id="tspan4452"
+ style="font-size:9.99999905px;line-height:1;font-family:sans-serif">but visible</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="150.66776"
y="148.39902"
- id="text4454"
- sodipodi:linespacing="125%"><tspan
+ id="text4454"><tspan
sodipodi:role="line"
id="tspan4456"
x="150.66776"
- y="148.39902">unstable</tspan></text>
+ y="148.39902"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">orphan</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#marker3230);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 41.433633,155.93241 c 4.445697,11.92656 24.017716,1.13391 25.948336,14.64825"
@@ -749,90 +753,17 @@
d="m 174.94201,152.58423 c 1.6786,11.87585 15.90381,0.83843 15.90381,15.90382"
id="path5104"
inkscape:connector-curvature="0" />
- <g
- id="g5631"
- transform="translate(-27.905601,-5.4032307)">
- <rect
- y="211.84996"
- x="118.4056"
- height="18.05327"
- width="21.481739"
- id="rect2987-4-0-0"
- style="fill:none;stroke:#404040;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" />
- <text
- inkscape:transform-center-x="2.6044813"
- transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
- id="text5217-8-9-2"
- y="225.24431"
- x="121.1868"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#404040;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
- xml:space="preserve"><tspan
- id="tspan6156-7-4"
- sodipodi:role="line"
- x="121.1868"
- y="225.24431">14</tspan></text>
- </g>
<text
xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
- x="108.67482"
- y="206.41029"
- id="text4119"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan4121"
- x="108.67482"
- y="206.41029"
- style="font-size:8px;font-weight:bold;-inkscape-font-specification:Sans Bold">T</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3230)"
- d="m 79.976346,193.5 12.52908,12.94673"
- id="path5636"
- inkscape:connector-type="polyline"
- inkscape:connector-curvature="0"
- inkscape:connection-start="#g5560"
- inkscape:connection-start-point="d4"
- inkscape:connection-end="#g5631"
- inkscape:connection-end-point="d4" />
- <text
- xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
- x="143.52129"
- y="224.8358"
- id="text4787"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- x="143.52129"
- y="224.8358"
- id="tspan4791">temporary</tspan><tspan
- sodipodi:role="line"
- x="143.52129"
- y="234.8358"
- id="tspan4795">amend</tspan><tspan
- sodipodi:role="line"
- x="143.52129"
- y="244.8358"
- id="tspan4797">commit;</tspan><tspan
- sodipodi:role="line"
- x="143.52129"
- y="254.8358"
- id="tspan6283">obsolete and</tspan><tspan
- sodipodi:role="line"
- x="143.52129"
- y="264.83582"
- id="tspan6285">hidden</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="95.495201"
y="291.81802"
- id="text4799-8-7"
- sodipodi:linespacing="125%"><tspan
+ id="text4799-8-7"><tspan
sodipodi:role="line"
id="tspan4801-4-8"
x="95.495201"
- y="291.81802">working dir</tspan></text>
+ y="291.81802"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">working dir</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#marker3230);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 114.6749,14.053603 C 108.77815,29.370318 80.769041,12.646358 73.241271,33.724116"
@@ -843,9 +774,4 @@
d="m 92.984542,288.7868 c -17.463809,1.31107 -20.109707,1.30681 -21.213204,-14.14214"
id="path7860"
inkscape:connector-curvature="0" />
- <path
- style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;marker-end:url(#marker3230)"
- d="m 139.5,223.5 c -16.33548,3.61997 -8.82833,-10 -24.5,-10"
- id="path8482"
- inkscape:connector-curvature="0" />
</svg>
--- a/docs/figures/figure-ug07.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug07.svg Tue Jun 04 11:08:44 2019 +0200
@@ -13,7 +13,7 @@
height="220"
id="svg8082"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug07.svg">
<defs
id="defs8084">
@@ -199,10 +199,10 @@
inkscape:current-layer="layer1"
inkscape:document-units="px"
showgrid="false"
- inkscape:window-width="887"
- inkscape:window-height="875"
- inkscape:window-x="342"
- inkscape:window-y="160"
+ inkscape:window-width="1814"
+ inkscape:window-height="950"
+ inkscape:window-x="51"
+ inkscape:window-y="82"
inkscape:window-maximized="0"
fit-margin-top="0"
fit-margin-left="0"
@@ -227,16 +227,16 @@
transform="translate(0,18.65699)">
<text
xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="113.19138"
y="21.624107"
id="text5217-8-0"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
sodipodi:role="line"
id="tspan8594"
x="113.19138"
- y="21.624107">hg evolve --all</tspan></text>
+ y="21.624107"
+ style="font-size:12px;line-height:1.25;font-family:monospace">hg evolve --all</tspan></text>
<g
id="g6372"
transform="translate(63.844068,-32.28608)">
@@ -272,13 +272,12 @@
style="fill:none;stroke:#000000;stroke-width:1.0000037;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(1.0000037,0.9999963)"
- sodipodi:linespacing="125%"
id="text5217-7"
y="154.84212"
x="3.3424876"
- style="font-size:12.00004482px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
- style="stroke:none"
+ style="font-size:12.00004482px;line-height:1.25;font-family:sans-serif;stroke:none"
y="154.84212"
x="3.3424876"
id="tspan5219-3"
@@ -293,18 +292,18 @@
y="136.78973" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="63.342571"
y="150.18422"
id="text5217-8-7"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
sodipodi:role="line"
id="tspan3914"
x="63.342571"
- y="150.18422">15</tspan></text>
+ y="150.18422"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">14</tspan></text>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-6);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-6)"
d="M 18.241201,77.474272 64.240665,136.78973"
id="path5012"
inkscape:connector-type="polyline"
@@ -314,7 +313,7 @@
inkscape:connection-start="#g3291"
inkscape:connection-start-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4448);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4448)"
d="M 21.981991,68.626653 60.499999,69.26862"
id="path4542"
inkscape:connector-type="polyline"
@@ -332,16 +331,16 @@
id="rect2987-4-8"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 4;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-4"
y="154.84152"
x="63.497734"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-4"
sodipodi:role="line"
x="63.497734"
- y="154.84152">11</tspan></text>
+ y="154.84152"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">11</tspan></text>
</g>
<g
id="g8702"
@@ -355,16 +354,16 @@
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 4;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72-7"
y="88.815628"
x="123.54466"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9-7"
sodipodi:role="line"
x="123.54466"
- y="88.815628">12</tspan></text>
+ y="88.815628"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">12</tspan></text>
</g>
<g
id="g8707"
@@ -378,19 +377,19 @@
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 4;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3-9"
y="88.815628"
x="183.42468"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0-0"
sodipodi:role="line"
x="183.42468"
- y="88.815628">13</tspan></text>
+ y="88.815628"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">13</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 81.981809,68.44765 38.517981,-2e-6"
id="path3178-0"
inkscape:connector-type="polyline"
@@ -398,8 +397,8 @@
inkscape:connection-end="#g8702"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
- d="m 141.98153,68.447648 38.51827,0"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
+ d="M 141.98153,68.447648 H 180.4998"
id="path3180-2"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -408,71 +407,28 @@
inkscape:connection-end="#g8707"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 3;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="m 71.240899,77.47427 -2.6e-5,59.31546"
id="path4123"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-end="#rect2987-4-4"
inkscape:connection-end-point="d4" />
- <g
- id="g5631"
- transform="translate(-27.905602,-122.06022)">
- <rect
- y="211.84996"
- x="118.4056"
- height="18.05327"
- width="21.481739"
- id="rect2987-4-0-0"
- style="fill:none;stroke:#404040;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" />
- <text
- inkscape:transform-center-x="2.6044813"
- transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
- id="text5217-8-9-2"
- y="225.24431"
- x="121.1868"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#404040;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
- xml:space="preserve"><tspan
- id="tspan6156-7-4"
- sodipodi:role="line"
- x="121.1868"
- y="225.24431">14</tspan></text>
- </g>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
- x="108.67482"
- y="89.753288"
- id="text4119"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan4121"
- x="108.67482"
- y="89.753288"
- style="font-size:8px;font-weight:bold;-inkscape-font-specification:Sans Bold">T</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3230)"
- d="M 80.157925,77.47427 92.323846,89.78974"
- id="path5636"
- inkscape:connector-type="polyline"
- inkscape:connector-curvature="0"
- inkscape:connection-start="#g5560"
- inkscape:connection-start-point="d4"
- inkscape:connection-end="#g5631"
- inkscape:connection-end-point="d4" />
<flowRoot
xml:space="preserve"
id="flowRoot8394"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
transform="translate(0,-36)"><flowRegion
- id="flowRegion8396"><rect
+ id="flowRegion8396"
+ style="font-family:sans-serif"><rect
id="rect8398"
width="311.2373"
height="172.50397"
x="13.690791"
- y="268.24911" /></flowRegion><flowPara
- id="flowPara8400" /></flowRoot> <g
+ y="268.24911"
+ style="font-family:sans-serif" /></flowRegion><flowPara
+ id="flowPara8400"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif"> </flowPara></flowRoot> <g
id="g8798"
transform="translate(28.427001,-38.337945)">
<rect
@@ -484,16 +440,16 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-7-4"
y="188.52202"
x="94.915642"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="188.52202"
x="94.915642"
id="tspan3914-6"
- sodipodi:role="line">16</tspan></text>
+ sodipodi:role="line"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">15</tspan></text>
</g>
<g
id="g8803"
@@ -507,19 +463,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-7-46"
y="188.52202"
x="174.91582"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="188.52202"
x="174.91582"
id="tspan3914-1"
- sodipodi:role="line">17</tspan></text>
+ sodipodi:role="line"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">16</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4448);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4448)"
d="m 81.981739,145.81637 38.518261,0"
id="path4542-5"
inkscape:connector-type="polyline"
@@ -529,7 +485,7 @@
inkscape:connection-end="#g8798"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4448);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4448)"
d="M 141.98174,145.77795 180.5,145.64016"
id="path4542-1"
inkscape:connector-type="polyline"
@@ -537,7 +493,7 @@
inkscape:connection-start="#g8798"
inkscape:connection-start-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 3;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="m 131.24068,77.474283 1.6e-4,59.315457"
id="path4123-1"
inkscape:connector-type="polyline"
@@ -547,7 +503,7 @@
inkscape:connection-end="#g8798"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 3;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="m 191.24069,77.474283 1.6e-4,59.315457"
id="path4123-14"
inkscape:connector-type="polyline"
@@ -558,37 +514,37 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="226.23938"
y="81.810745"
- id="text3058"
- sodipodi:linespacing="125%"><tspan
+ id="text3058"><tspan
sodipodi:role="line"
id="tspan3060"
x="226.23938"
- y="81.810745">obsolete, hidden</tspan></text>
+ y="81.810745"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">obsolete, hidden</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="243.1927"
y="151.52931"
- id="text6402"
- sodipodi:linespacing="125%"><tspan
+ id="text6402"><tspan
sodipodi:role="line"
id="tspan6404"
x="243.1927"
- y="151.52931">working dir</tspan></text>
+ y="151.52931"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">working dir</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="102"
y="184.34302"
- id="text7020"
- sodipodi:linespacing="125%"><tspan
+ id="text7020"><tspan
sodipodi:role="line"
id="tspan7022"
x="102"
- y="184.34302">successors</tspan></text>
+ y="184.34302"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">successors</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 214.5,51.843009 c 2.26039,0.588947 4.4416,0.9416 5.5,2 2.95364,2.953636 2.98797,53.512031 0.5,56.000001 -3.15839,3.15839 -5.49327,6.33109 -9,7.5"
--- a/docs/figures/figure-ug08.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug08.svg Tue Jun 04 11:08:44 2019 +0200
@@ -13,7 +13,7 @@
height="190"
id="svg8392"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug08.svg">
<defs
id="defs8394">
@@ -132,7 +132,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
+ <dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -152,16 +152,16 @@
id="rect2987-4"
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8"
y="807.20361"
x="3.4977415"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156"
sodipodi:role="line"
x="3.4977415"
- y="807.20361">18</tspan></text>
+ y="807.20361"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">18</tspan></text>
</g>
<g
id="g3118"
@@ -175,16 +175,16 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72"
y="14.841505"
x="123.54487"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9"
sodipodi:role="line"
x="123.54487"
- y="14.841505">19</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">19</tspan></text>
</g>
<g
id="g3126"
@@ -198,19 +198,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3"
y="14.841505"
x="183.42488"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0"
sodipodi:role="line"
x="183.42488"
- y="14.841505">20</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">20</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 21.981806,796.83549 38.518193,4e-5"
id="path3178"
inkscape:connector-type="polyline"
@@ -220,8 +220,8 @@
inkscape:connection-start="#g8678"
inkscape:connection-start-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
- d="m 81.981738,796.83555 38.518072,0"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
+ d="M 81.981738,796.83555 H 120.49981"
id="path3180"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -231,27 +231,27 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="192.95625"
y="783.27075"
- id="text4799-8"
- sodipodi:linespacing="125%"><tspan
+ id="text4799-8"><tspan
sodipodi:role="line"
id="tspan4801-4"
x="192.95625"
- y="783.27075">working dir</tspan></text>
+ y="783.27075"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">working dir</tspan></text>
<text
xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="80.662636"
y="851.4538"
id="text5217-8-0"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
sodipodi:role="line"
id="tspan8594"
x="80.662636"
- y="851.4538">hg prune 19</tspan></text>
+ y="851.4538"
+ style="font-size:12px;line-height:1.25;font-family:monospace">hg prune 19</tspan></text>
<g
id="g6372"
transform="translate(31.315375,797.54535)">
@@ -286,16 +286,16 @@
id="rect2987-4-9"
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-32"
y="807.20361"
x="3.4977415"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-8"
sodipodi:role="line"
x="3.4977415"
- y="807.20361">18</tspan></text>
+ y="807.20361"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">18</tspan></text>
</g>
<rect
style="fill:none;stroke:#000000;stroke-width:0.99999946;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999946, 3.99999785;stroke-dashoffset:0"
@@ -306,15 +306,15 @@
y="892.8089" />
<text
xml:space="preserve"
- style="font-size:11.99999428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="63.544647"
y="906.20331"
- id="text5217-8-72-1"
- sodipodi:linespacing="125%"><tspan
+ id="text5217-8-72-1"><tspan
y="906.20331"
x="63.544647"
sodipodi:role="line"
- id="tspan6156-9-8">19</tspan></text>
+ id="tspan6156-9-8"
+ style="font-size:11.99999428px;line-height:1.25;font-family:sans-serif">19</tspan></text>
<g
id="g3126-8"
transform="matrix(1.0000032,0,0,0.99999991,-60.000385,891.36218)">
@@ -327,19 +327,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3-8"
y="14.841505"
x="183.42488"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0-9"
sodipodi:role="line"
x="183.42488"
- y="14.841505">20</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">20</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 21.981875,901.83548 38.518126,5e-5"
id="path3178-9"
inkscape:connector-type="polyline"
@@ -347,7 +347,7 @@
inkscape:connection-start="#g8678-6"
inkscape:connection-start-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 81.981808,901.83554 38.518382,0"
id="path3180-1"
inkscape:connector-type="polyline"
@@ -356,41 +356,42 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="33.872818"
y="941.35645"
- id="text9295"
- sodipodi:linespacing="125%"><tspan
+ id="text9295"><tspan
sodipodi:role="line"
id="tspan9297"
x="33.872818"
- y="941.35645">obsolete</tspan><tspan
+ y="941.35645"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">obsolete</tspan><tspan
sodipodi:role="line"
x="33.872818"
y="953.85645"
- id="tspan9299">but visible</tspan></text>
+ id="tspan9299"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">but visible</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="125.75282"
y="939.66284"
- id="text9301"
- sodipodi:linespacing="125%"><tspan
+ id="text9301"><tspan
sodipodi:role="line"
id="tspan9303"
x="125.75282"
- y="939.66284">unstable</tspan></text>
+ y="939.66284"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">orphan</tspan></text>
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="192.95625"
y="920.7381"
- id="text4799-8-4"
- sodipodi:linespacing="125%"><tspan
+ id="text4799-8-4"><tspan
sodipodi:role="line"
id="tspan4801-4-2"
x="192.95625"
- y="920.7381">working dir</tspan></text>
+ y="920.7381"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">working dir</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#marker8695);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 188.0904,779.78292 c -26.25288,3.51598 -8.22083,22.5684 -39.59798,18.38478"
--- a/docs/figures/figure-ug09.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug09.svg Tue Jun 04 11:08:44 2019 +0200
@@ -13,7 +13,7 @@
height="150"
id="svg10360"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug09.svg">
<defs
id="defs10362">
@@ -90,7 +90,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
+ <dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -101,16 +101,16 @@
transform="translate(-52.986766,123.22995)">
<text
xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="132.17838"
y="-88.939552"
id="text5217-8-0"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
sodipodi:role="line"
id="tspan8594"
x="132.17838"
- y="-88.939552">hg evolve --all</tspan></text>
+ y="-88.939552"
+ style="font-size:12px;line-height:1.25;font-family:monospace">hg evolve --all</tspan></text>
<g
id="g6372"
transform="translate(82.830913,-142.84994)">
@@ -145,16 +145,16 @@
id="rect2987-4-9"
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-32"
y="807.20361"
x="3.4977415"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-8"
sodipodi:role="line"
x="3.4977415"
- y="807.20361">18</tspan></text>
+ y="807.20361"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">18</tspan></text>
</g>
<g
id="g11168"
@@ -167,16 +167,16 @@
id="rect2987-4-02-6"
style="fill:none;stroke:#000000;stroke-width:0.99999946;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999946, 3.99999783;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-72-1"
y="-149.15291"
x="116.53148"
- style="font-size:11.99999428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9-8"
sodipodi:role="line"
x="116.53148"
- y="-149.15291">19</tspan></text>
+ y="-149.15291"
+ style="font-size:11.99999428px;line-height:1.25;font-family:sans-serif">19</tspan></text>
</g>
<g
id="g11163"
@@ -189,19 +189,19 @@
id="rect2987-4-026-7"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 4;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-3-8"
y="-149.15244"
x="176.41162"
- style="font-size:11.99999428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0-9"
sodipodi:role="line"
x="176.41162"
- y="-149.15244">20</tspan></text>
+ y="-149.15244"
+ style="font-size:11.99999428px;line-height:1.25;font-family:sans-serif">20</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 74.96872,-41.52073 38.51813,3.7e-5"
id="path3178-9"
inkscape:connector-type="polyline"
@@ -211,7 +211,7 @@
inkscape:connection-start="#g8678-6"
inkscape:connection-start-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 134.96865,-41.520681 38.5184,1e-5"
id="path3180-1"
inkscape:connector-type="polyline"
@@ -231,16 +231,16 @@
id="rect2987-4-9-5"
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-32-6"
y="807.20361"
x="3.4977415"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-8-9"
sodipodi:role="line"
x="3.4977415"
- y="807.20361">21</tspan></text>
+ y="807.20361"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">21</tspan></text>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10584)"
@@ -253,7 +253,7 @@
inkscape:connection-end="#g8678-6-4"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 3;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="m 184.22792,-32.494034 -1.1e-4,31.0082104"
id="path4123-2"
inkscape:connector-type="polyline"
@@ -264,30 +264,31 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="188.27898"
y="-68.730186"
- id="text11674"
- sodipodi:linespacing="125%"><tspan
+ id="text11674"><tspan
sodipodi:role="line"
id="tspan11676"
x="188.27898"
- y="-68.730186">obsolete, hidden</tspan></text>
+ y="-68.730186"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">obsolete, hidden</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="229.09592"
y="4.1899796"
- id="text11678"
- sodipodi:linespacing="125%"><tspan
+ id="text11678"><tspan
sodipodi:role="line"
id="tspan11680"
x="229.09592"
- y="4.1899796">successor,</tspan><tspan
+ y="4.1899796"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">successor,</tspan><tspan
sodipodi:role="line"
x="229.09592"
y="16.68998"
- id="tspan11682">working dir</tspan></text>
+ id="tspan11682"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">working dir</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#marker10584);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 224.96835,6.48307 c -14.81489,-0.42162 -8.84647,9.26545 -25.22395,4.58617"
--- a/docs/figures/figure-ug10.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug10.svg Tue Jun 04 11:08:44 2019 +0200
@@ -13,7 +13,7 @@
height="400"
id="svg8392"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug10.svg">
<defs
id="defs8394">
@@ -264,16 +264,16 @@
id="rect2987-4"
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8"
y="807.20361"
x="3.4977415"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156"
sodipodi:role="line"
x="3.4977415"
- y="807.20361">21</tspan></text>
+ y="807.20361"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">21</tspan></text>
</g>
<g
id="g3118"
@@ -287,16 +287,16 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72"
y="14.841505"
x="123.54487"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9"
sodipodi:role="line"
x="123.54487"
- y="14.841505">22</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">22</tspan></text>
</g>
<g
id="g3126"
@@ -310,19 +310,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3"
y="14.841505"
x="183.42488"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0"
sodipodi:role="line"
x="183.42488"
- y="14.841505">23</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">23</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 21.981806,588.83549 38.518193,4e-5"
id="path3178"
inkscape:connector-type="polyline"
@@ -332,8 +332,8 @@
inkscape:connection-start="#g8678"
inkscape:connection-start-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
- d="m 81.981738,588.83555 38.518072,0"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
+ d="M 81.981738,588.83555 H 120.49981"
id="path3180"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -352,16 +352,16 @@
id="rect2987-4-9"
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-32"
y="807.20361"
x="3.4977415"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-8"
sodipodi:role="line"
x="3.4977415"
- y="807.20361">21</tspan></text>
+ y="807.20361"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">21</tspan></text>
</g>
<rect
style="fill:none;stroke:#000000;stroke-width:0.99999946;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999946, 3.99999785;stroke-dashoffset:0"
@@ -372,15 +372,15 @@
y="684.8089" />
<text
xml:space="preserve"
- style="font-size:11.99999428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="63.544647"
y="698.20331"
- id="text5217-8-72-1"
- sodipodi:linespacing="125%"><tspan
+ id="text5217-8-72-1"><tspan
y="698.20331"
x="63.544647"
sodipodi:role="line"
- id="tspan6156-9-8">22</tspan></text>
+ id="tspan6156-9-8"
+ style="font-size:11.99999428px;line-height:1.25;font-family:sans-serif">22</tspan></text>
<g
id="g3126-8"
transform="matrix(1.0000032,0,0,0.99999991,-60.000385,683.36218)">
@@ -393,19 +393,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3-8"
y="14.841505"
x="183.42488"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0-9"
sodipodi:role="line"
x="183.42488"
- y="14.841505">23</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">23</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 21.981875,693.83548 38.518126,5e-5"
id="path3178-9"
inkscape:connector-type="polyline"
@@ -413,7 +413,7 @@
inkscape:connection-start="#g8678-6"
inkscape:connection-start-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 81.981808,693.83554 38.518382,0"
id="path3180-1"
inkscape:connector-type="polyline"
@@ -422,47 +422,48 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="7.5114212"
y="652.66315"
- id="text9295"
- sodipodi:linespacing="100%"><tspan
+ id="text9295"><tspan
sodipodi:role="line"
id="tspan9297"
x="7.5114212"
- y="652.66315">obsolete</tspan><tspan
+ y="652.66315"
+ style="font-size:10px;line-height:1;font-family:sans-serif">obsolete</tspan><tspan
sodipodi:role="line"
x="7.5114212"
y="662.66315"
- id="tspan9299">but visible</tspan></text>
+ id="tspan9299"
+ style="font-size:10px;line-height:1;font-family:sans-serif">but visible</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="155.24913"
y="668.43335"
- id="text9301"
- sodipodi:linespacing="125%"><tspan
+ id="text9301"><tspan
sodipodi:role="line"
id="tspan9303"
x="155.24913"
- y="668.43335">unstable</tspan></text>
+ y="668.43335"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">orphan</tspan></text>
<g
id="g5433"
transform="translate(32.476727,584.47248)">
<text
transform="scale(0.9999978,1.0000022)"
- sodipodi:linespacing="125%"
id="text5217-8-0"
y="58.841717"
x="46.92271"
- style="font-size:11.99999809px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="58.841717"
x="46.92271"
id="tspan8594"
- sodipodi:role="line">hg uncommit <tspan
+ sodipodi:role="line"
+ style="font-size:11.99999809px;line-height:1.25;font-family:monospace">hg uncommit <tspan
id="tspan3131"
- style="font-style:italic">f1 f2 ...</tspan></tspan></text>
+ style="font-style:italic;font-family:monospace">f1 f2 ...</tspan></tspan></text>
<g
transform="translate(-0.59241834,4.9316169)"
id="g6372-4">
@@ -499,38 +500,40 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72-3"
y="14.841505"
x="123.54487"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9-3"
sodipodi:role="line"
x="123.54487"
- y="14.841505">24</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">24</tspan></text>
</g>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="187.68906"
y="740.26349"
- id="text3218"
- sodipodi:linespacing="100%"><tspan
+ id="text3218"><tspan
sodipodi:role="line"
id="tspan3220"
x="187.68906"
- y="740.26349">working dir</tspan><tspan
+ y="740.26349"
+ style="font-size:10px;line-height:1;font-family:sans-serif">working dir</tspan><tspan
sodipodi:role="line"
x="187.68906"
y="750.26349"
- id="tspan4379">(with uncommitted</tspan><tspan
+ id="tspan4379"
+ style="font-size:10px;line-height:1;font-family:sans-serif">(with uncommitted</tspan><tspan
sodipodi:role="line"
x="187.68906"
y="760.26349"
- id="tspan4381">changes to f1 f2 ...)</tspan></text>
+ id="tspan4381"
+ style="font-size:10px;line-height:1;font-family:sans-serif">changes to f1 f2 ...)</tspan></text>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 21.981875,702.7739 38.518124,32.05414"
id="path3178-9-5"
inkscape:connector-type="polyline"
@@ -540,7 +543,7 @@
inkscape:connection-end="#g3118-2"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="m 71.240897,702.86217 -2.2e-5,31.87761"
id="path4123"
inkscape:connector-type="polyline"
@@ -551,22 +554,23 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:11.99999809px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="79.694885"
y="791.03015"
id="text5217-8-0-7"
- sodipodi:linespacing="125%"
transform="scale(0.9999978,1.0000022)"><tspan
id="tspan3316"
sodipodi:role="line"
x="79.694885"
- y="791.03015">hg revert <tspan
+ y="791.03015"
+ style="font-size:11.99999809px;line-height:1.25;font-family:monospace">hg revert <tspan
id="tspan3314"
- style="font-style:italic">f1 f2 ...</tspan></tspan><tspan
+ style="font-style:italic;font-family:monospace">f1 f2 ...</tspan></tspan><tspan
id="tspan3322"
sodipodi:role="line"
x="79.694885"
- y="806.03015">hg evolve --all</tspan></text>
+ y="806.03015"
+ style="font-size:11.99999809px;line-height:1.25;font-family:monospace">hg evolve --all</tspan></text>
<g
id="g6372-4-2"
transform="translate(32.179684,745.12164)">
@@ -602,15 +606,15 @@
y="793.80884" />
<text
xml:space="preserve"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="3.4977415"
y="807.20361"
- id="text5217-8-32-6"
- sodipodi:linespacing="125%"><tspan
+ id="text5217-8-32-6"><tspan
y="807.20361"
x="3.4977415"
sodipodi:role="line"
- id="tspan6156-8-5">21</tspan></text>
+ id="tspan6156-8-5"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">21</tspan></text>
</g>
<rect
y="839.21106"
@@ -620,16 +624,16 @@
id="rect2987-4-02-6-9"
style="fill:none;stroke:#000000;stroke-width:0.99999946;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999946, 3.99999785;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-72-1-2"
y="852.60547"
x="63.544647"
- style="font-size:11.99999428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9-8-1"
sodipodi:role="line"
x="63.544647"
- y="852.60547">22</tspan></text>
+ y="852.60547"
+ style="font-size:11.99999428px;line-height:1.25;font-family:sans-serif">22</tspan></text>
<g
id="g4295">
<rect
@@ -641,15 +645,15 @@
y="839.21106" />
<text
xml:space="preserve"
- style="font-size:11.99999428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="123.42475"
y="852.60547"
- id="text5217-8-3-8-6"
- sodipodi:linespacing="125%"><tspan
+ id="text5217-8-3-8-6"><tspan
y="852.60547"
x="123.42475"
sodipodi:role="line"
- id="tspan6156-0-9-3">23</tspan></text>
+ id="tspan6156-0-9-3"
+ style="font-size:11.99999428px;line-height:1.25;font-family:sans-serif">23</tspan></text>
</g>
<path
inkscape:connection-start-point="d4"
@@ -658,13 +662,13 @@
inkscape:connector-type="polyline"
id="path3178-9-1"
d="m 21.981875,848.23763 38.518124,2e-5"
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline" />
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)" />
<path
inkscape:connector-curvature="0"
inkscape:connector-type="polyline"
id="path3180-1-7"
d="m 81.981809,848.23766 38.518381,3e-5"
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
inkscape:connection-end="#g4295"
inkscape:connection-end-point="d4" />
<g
@@ -679,16 +683,16 @@
y="1.4467307" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="123.54487"
y="14.841505"
id="text5217-8-72-3-4"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
y="14.841505"
x="123.54487"
sodipodi:role="line"
- id="tspan6156-9-3-9">24</tspan></text>
+ id="tspan6156-9-3-9"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">24</tspan></text>
</g>
<path
inkscape:connection-end-point="d4"
@@ -699,7 +703,7 @@
inkscape:connector-type="polyline"
id="path3178-9-5-1"
d="m 21.981875,857.17605 38.518124,32.05412"
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline" />
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)" />
<path
inkscape:connection-end-point="d4"
inkscape:connection-end="#g3118-2-6"
@@ -709,7 +713,7 @@
inkscape:connector-type="polyline"
id="path4123-8"
d="m 71.240897,857.26433 -2.2e-5,31.87757"
- style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;marker-start:url(#DotM);display:inline" />
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)" />
<g
transform="translate(-1.0430814e-6,887.87361)"
id="g3118-2-6-6">
@@ -722,23 +726,23 @@
y="1.4467307" />
<text
xml:space="preserve"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="123.54487"
y="14.841505"
id="text5217-8-72-3-4-9"
- sodipodi:linespacing="125%"
transform="scale(0.9999979,1.0000021)"><tspan
y="14.841505"
x="123.54487"
sodipodi:role="line"
- id="tspan6156-9-3-9-1">25</tspan></text>
+ id="tspan6156-9-3-9-1"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">25</tspan></text>
</g>
<path
inkscape:connector-curvature="0"
inkscape:connector-type="polyline"
id="path4123-8-2"
d="m 131.24105,857.26433 -1.4e-4,32.05601"
- style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
inkscape:connection-start="#g4295"
inkscape:connection-start-point="d4"
inkscape:connection-end="#g3118-2-6-6"
@@ -748,72 +752,76 @@
inkscape:connector-type="polyline"
id="path3178-9-1-1"
d="M 81.981738,898.20048 120.5,898.31503"
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
inkscape:connection-start="#g3118-2-6"
inkscape:connection-start-point="d4"
inkscape:connection-end="#g3118-2-6-6"
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="187.37656"
y="909.57391"
- id="text4799-8-0"
- sodipodi:linespacing="125%"><tspan
+ id="text4799-8-0"><tspan
sodipodi:role="line"
x="187.37656"
y="909.57391"
- id="tspan4416">working dir</tspan><tspan
+ id="tspan4416"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">working dir</tspan><tspan
sodipodi:role="line"
x="187.37656"
y="922.07391"
- id="tspan4420">(clean)</tspan></text>
+ id="tspan4420"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">(clean)</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="175.91385"
y="840.83063"
- id="text4404"
- sodipodi:linespacing="100%"><tspan
+ id="text4404"><tspan
sodipodi:role="line"
id="tspan4406"
x="175.91385"
- y="840.83063">obsolete,</tspan><tspan
+ y="840.83063"
+ style="font-size:10px;line-height:1;font-family:sans-serif">obsolete,</tspan><tspan
sodipodi:role="line"
x="175.91385"
y="850.83063"
- id="tspan4408">hidden,</tspan><tspan
+ id="tspan4408"
+ style="font-size:10px;line-height:1;font-family:sans-serif">hidden,</tspan><tspan
sodipodi:role="line"
x="175.91385"
y="860.83063"
- id="tspan4410">precursors</tspan></text>
+ id="tspan4410"
+ style="font-size:10px;line-height:1;font-family:sans-serif">predecessors</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="53.690826"
y="380.35703"
id="text4412"
- sodipodi:linespacing="100%"
transform="translate(0,559.99805)"><tspan
sodipodi:role="line"
id="tspan4414"
x="53.690826"
- y="380.35703">successors</tspan></text>
+ y="380.35703"
+ style="font-size:10px;line-height:1;font-family:sans-serif">successors</tspan></text>
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="187.37656"
y="571.41107"
- id="text4799-8-0-8"
- sodipodi:linespacing="125%"><tspan
+ id="text4799-8-0-8"><tspan
sodipodi:role="line"
x="187.37656"
y="571.41107"
- id="tspan4416-9">working dir</tspan><tspan
+ id="tspan4416-9"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">working dir</tspan><tspan
sodipodi:role="line"
x="187.37656"
y="583.91107"
- id="tspan4420-1">(clean)</tspan></text>
+ id="tspan4420-1"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">(clean)</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;marker-end:url(#Arrow2Mend-2-0)"
d="M 182.62097,9.6751729 C 149.31312,5.6732792 109.12827,-5.7223311 84.489703,18.916234"
--- a/docs/figures/figure-ug11.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug11.svg Tue Jun 04 11:08:44 2019 +0200
@@ -13,7 +13,7 @@
height="260"
id="svg8392"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug11.svg">
<defs
id="defs8394">
@@ -306,16 +306,16 @@
id="rect2987-4"
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8"
y="807.20361"
x="3.4977415"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156"
sodipodi:role="line"
x="3.4977415"
- y="807.20361">25</tspan></text>
+ y="807.20361"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">25</tspan></text>
</g>
<g
id="g3118"
@@ -329,16 +329,16 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72"
y="14.841505"
x="123.54487"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9"
sodipodi:role="line"
x="123.54487"
- y="14.841505">26</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">26</tspan></text>
</g>
<g
id="g3126"
@@ -352,19 +352,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3"
y="14.841505"
x="183.42488"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0"
sodipodi:role="line"
x="183.42488"
- y="14.841505">27</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">27</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 21.981806,580.83549 38.518193,4e-5"
id="path3178"
inkscape:connector-type="polyline"
@@ -374,8 +374,8 @@
inkscape:connection-start="#g8678"
inkscape:connection-start-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
- d="m 81.981738,580.83555 38.518072,0"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
+ d="M 81.981738,580.83555 H 120.49981"
id="path3180"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
@@ -394,16 +394,16 @@
id="rect2987-4-9"
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-32"
y="807.20361"
x="3.4977415"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-8"
sodipodi:role="line"
x="3.4977415"
- y="807.20361">25</tspan></text>
+ y="807.20361"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">25</tspan></text>
</g>
<rect
style="fill:none;stroke:#000000;stroke-width:0.99999946;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999946, 3.99999785;stroke-dashoffset:0"
@@ -414,15 +414,15 @@
y="685.14484" />
<text
xml:space="preserve"
- style="font-size:11.99999428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="63.544647"
y="698.53925"
- id="text5217-8-72-1"
- sodipodi:linespacing="125%"><tspan
+ id="text5217-8-72-1"><tspan
y="698.53925"
x="63.544647"
sodipodi:role="line"
- id="tspan6156-9-8">26</tspan></text>
+ id="tspan6156-9-8"
+ style="font-size:11.99999428px;line-height:1.25;font-family:sans-serif">26</tspan></text>
<g
id="g3126-8"
transform="matrix(1.0000032,0,0,0.99999991,-60.000385,683.69805)">
@@ -435,19 +435,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3-8"
y="14.841505"
x="183.42488"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0-9"
sodipodi:role="line"
x="183.42488"
- y="14.841505">27</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">27</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 21.981875,694.17135 38.518126,5e-5"
id="path3178-9"
inkscape:connector-type="polyline"
@@ -455,7 +455,7 @@
inkscape:connection-start="#g8678-6"
inkscape:connection-start-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 81.981808,694.17141 38.518382,0"
id="path3180-1"
inkscape:connector-type="polyline"
@@ -464,48 +464,50 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="6.5114212"
y="652.66315"
- id="text9295"
- sodipodi:linespacing="100%"><tspan
+ id="text9295"><tspan
sodipodi:role="line"
id="tspan9297"
x="6.5114212"
- y="652.66315">obsolete</tspan><tspan
+ y="652.66315"
+ style="font-size:10px;line-height:1;font-family:sans-serif">obsolete</tspan><tspan
sodipodi:role="line"
x="6.5114212"
y="662.66315"
- id="tspan9299">but visible</tspan></text>
+ id="tspan9299"
+ style="font-size:10px;line-height:1;font-family:sans-serif">but visible</tspan></text>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="159.24913"
y="668.43335"
- id="text9301"
- sodipodi:linespacing="125%"><tspan
+ id="text9301"><tspan
sodipodi:role="line"
id="tspan9303"
x="159.24913"
- y="668.43335">unstable</tspan></text>
+ y="668.43335"
+ style="font-size:10px;line-height:1.25;font-family:sans-serif">orphan</tspan></text>
<text
xml:space="preserve"
- style="font-size:11.99999809px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="79.399506"
y="627.31293"
id="text5217-8-0"
- sodipodi:linespacing="125%"
transform="scale(0.9999978,1.0000022)"><tspan
sodipodi:role="line"
id="tspan8594"
x="79.399506"
- y="627.31293">hg uncommit <tspan
- style="font-style:italic"
+ y="627.31293"
+ style="font-size:11.99999809px;line-height:1.25;font-family:monospace">hg uncommit <tspan
+ style="font-style:italic;font-family:monospace"
id="tspan3131">f1 f2 ...</tspan></tspan><tspan
sodipodi:role="line"
x="79.399506"
y="642.31293"
- id="tspan3124">hg commit</tspan></text>
+ id="tspan3124"
+ style="font-size:11.99999809px;line-height:1.25;font-family:monospace">hg commit</tspan></text>
<g
id="g6372-4"
transform="translate(31.884309,581.4041)">
@@ -541,34 +543,35 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72-3"
y="14.841505"
x="123.54487"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9-3"
sodipodi:role="line"
x="123.54487"
- y="14.841505">28</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">28</tspan></text>
</g>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="187.37656"
y="781.10907"
- id="text3218"
- sodipodi:linespacing="100%"><tspan
+ id="text3218"><tspan
sodipodi:role="line"
x="187.37656"
y="781.10907"
- id="tspan4381">working dir</tspan><tspan
+ id="tspan4381"
+ style="font-size:10px;line-height:1;font-family:sans-serif">working dir</tspan><tspan
sodipodi:role="line"
x="187.37656"
y="791.10907"
- id="tspan3635">(clean)</tspan></text>
+ id="tspan3635"
+ style="font-size:10px;line-height:1;font-family:sans-serif">(clean)</tspan></text>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 21.981875,703.12214 38.518124,32.09853"
id="path3178-9-5"
inkscape:connector-type="polyline"
@@ -578,7 +581,7 @@
inkscape:connection-end="#g3118-2"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="m 71.240897,703.1981 -2.2e-5,31.94668"
id="path4123"
inkscape:connector-type="polyline"
@@ -589,19 +592,20 @@
inkscape:connection-end-point="d4" />
<text
xml:space="preserve"
- style="font-size:9.99999905px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="187.37656"
y="563.41107"
- id="text4799-8-0-8"
- sodipodi:linespacing="125%"><tspan
+ id="text4799-8-0-8"><tspan
sodipodi:role="line"
x="187.37656"
y="563.41107"
- id="tspan4416-9">working dir</tspan><tspan
+ id="tspan4416-9"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">working dir</tspan><tspan
sodipodi:role="line"
x="187.37656"
y="575.91107"
- id="tspan4420-1">(clean)</tspan></text>
+ id="tspan4420-1"
+ style="font-size:9.99999905px;line-height:1.25;font-family:sans-serif">(clean)</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow2Mend-2-0);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 182.62097,561.67322 c -33.30785,-4.00189 -73.4927,-15.3975 -98.131267,9.24106"
@@ -619,19 +623,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72-3-7"
y="14.841505"
x="123.54487"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9-3-0"
sodipodi:role="line"
x="123.54487"
- y="14.841505">29</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">29</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="M 81.981738,753.12214 120.5,785.22069"
id="path3180-1-6"
inkscape:connector-type="polyline"
--- a/docs/figures/figure-ug12.svg Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/figures/figure-ug12.svg Tue Jun 04 11:08:44 2019 +0200
@@ -13,7 +13,7 @@
height="200"
id="svg3183"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="figure-ug12.svg">
<defs
id="defs3185">
@@ -324,16 +324,16 @@
transform="translate(2,-8)">
<text
transform="scale(0.9999978,1.0000022)"
- sodipodi:linespacing="125%"
id="text5217-8-0-7"
y="900.3703"
x="76.696045"
- style="font-size:11.99999809px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Monospace;-inkscape-font-specification:Monospace"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:monospace;-inkscape-font-specification:Monospace;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="900.3703"
x="76.696045"
sodipodi:role="line"
- id="tspan3322">hg evolve --all</tspan></text>
+ id="tspan3322"
+ style="font-size:11.99999809px;line-height:1.25;font-family:monospace">hg evolve --all</tspan></text>
<g
transform="translate(29.180861,844.4619)"
id="g6372-4-2">
@@ -369,16 +369,16 @@
id="rect2987-4-9"
style="fill:none;stroke:#000000;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-32"
y="807.20361"
x="3.4977415"
- style="font-size:11.99999332px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-8"
sodipodi:role="line"
x="3.4977415"
- y="807.20361">25</tspan></text>
+ y="807.20361"
+ style="font-size:11.99999332px;line-height:1.25;font-family:sans-serif">25</tspan></text>
</g>
<rect
style="fill:none;stroke:#000000;stroke-width:0.99999946;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999946, 3.99999785;stroke-dashoffset:0"
@@ -389,15 +389,15 @@
y="923.8089" />
<text
xml:space="preserve"
- style="font-size:11.99999428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="63.544647"
y="937.20331"
- id="text5217-8-72-1"
- sodipodi:linespacing="125%"><tspan
+ id="text5217-8-72-1"><tspan
y="937.20331"
x="63.544647"
sodipodi:role="line"
- id="tspan6156-9-8">26</tspan></text>
+ id="tspan6156-9-8"
+ style="font-size:11.99999428px;line-height:1.25;font-family:sans-serif">26</tspan></text>
<g
id="g4904">
<rect
@@ -408,19 +408,19 @@
id="rect2987-4-026-7"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 4;stroke-dashoffset:0" />
<text
- sodipodi:linespacing="125%"
id="text5217-8-3-8"
y="937.20325"
x="123.42475"
- style="font-size:11.99999428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0-9"
sodipodi:role="line"
x="123.42475"
- y="937.20325">27</tspan></text>
+ y="937.20325"
+ style="font-size:11.99999428px;line-height:1.25;font-family:sans-serif">27</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 21.981875,932.83543 38.518126,5e-5"
id="path3178-9"
inkscape:connector-type="polyline"
@@ -428,7 +428,7 @@
inkscape:connection-start="#g8678-6"
inkscape:connection-start-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 81.981805,932.83549 38.518385,-1e-5"
id="path3180-1"
inkscape:connector-type="polyline"
@@ -447,34 +447,35 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72-3"
y="14.841505"
x="123.54487"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9-3"
sodipodi:role="line"
x="123.54487"
- y="14.841505">28</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">28</tspan></text>
</g>
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="188.87656"
y="965.77319"
- id="text3218"
- sodipodi:linespacing="100%"><tspan
+ id="text3218"><tspan
sodipodi:role="line"
x="188.87656"
y="965.77319"
- id="tspan4381">working dir</tspan><tspan
+ id="tspan4381"
+ style="font-size:10px;line-height:1;font-family:sans-serif">working dir</tspan><tspan
sodipodi:role="line"
x="188.87656"
y="975.77319"
- id="tspan3635">(clean)</tspan></text>
+ id="tspan3635"
+ style="font-size:10px;line-height:1;font-family:sans-serif">(clean)</tspan></text>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 21.981875,941.78622 38.518124,32.09853"
id="path3178-9-5"
inkscape:connector-type="polyline"
@@ -484,7 +485,7 @@
inkscape:connection-end="#g3118-2"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="m 71.240897,941.86217 -2.2e-5,31.94669"
id="path4123"
inkscape:connector-type="polyline"
@@ -505,19 +506,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-72-3-7"
y="14.841505"
x="123.54487"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-9-3-0"
sodipodi:role="line"
x="123.54487"
- y="14.841505">29</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">29</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="M 81.981738,991.78623 120.5,1023.8848"
id="path3180-1-6"
inkscape:connector-type="polyline"
@@ -538,19 +539,19 @@
style="fill:none;stroke:#000000;stroke-width:0.99999791;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
transform="scale(0.9999979,1.0000021)"
- sodipodi:linespacing="125%"
id="text5217-8-3-8-6"
y="14.841505"
x="183.42488"
- style="font-size:11.9999752px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan6156-0-9-7"
sodipodi:role="line"
x="183.42488"
- y="14.841505">30</tspan></text>
+ y="14.841505"
+ style="font-size:11.9999752px;line-height:1.25;font-family:sans-serif">30</tspan></text>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:1.00000155px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-2)"
d="m 81.981738,982.8355 38.518272,4e-5"
id="path3180-1-4"
inkscape:connector-type="polyline"
@@ -560,7 +561,7 @@
inkscape:connection-end="#g3126-8-4"
inkscape:connection-end-point="d4" />
<path
- style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;marker-start:url(#DotM);display:inline"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99999986, 2.99999958;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#DotM)"
d="m 131.24108,941.86211 -5e-5,31.9468"
id="path4123-8"
inkscape:connector-type="polyline"
@@ -576,20 +577,21 @@
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="175"
y="154.5"
id="text5013"
- sodipodi:linespacing="100%"
transform="translate(0,852.36218)"><tspan
sodipodi:role="line"
id="tspan5015"
x="175"
- y="154.5">two heads!</tspan><tspan
+ y="154.5"
+ style="font-size:10px;line-height:1;font-family:sans-serif">two heads!</tspan><tspan
sodipodi:role="line"
x="175"
y="164.5"
- id="tspan5019">(merge or rebase)</tspan></text>
+ id="tspan5019"
+ style="font-size:10px;line-height:1;font-family:sans-serif">(merge or rebase)</tspan></text>
<path
style="color:#000000;fill:none;stroke:#707070;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow2Mend-2-0-5);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 170,152.5 c -16.09308,-9.35441 4.39162,-25.49226 -23.5,-23.5"
--- a/docs/from-mq.rst Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/from-mq.rst Tue Jun 04 11:08:44 2019 +0200
@@ -115,10 +115,10 @@
````````
When you rewrite changesets, descendants of rewritten changesets are marked as
-"unstable". You need to rewrite them on top of the new version of their
+"orphan". You need to rewrite them on top of the new version of their
ancestor.
-The evolution extension adds a command to rewrite "unstable"
+The evolution extension adds a command to rewrite "orphan"
changesets:::
$ hg evolve
--- a/docs/obs-terms.rst Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/obs-terms.rst Tue Jun 04 11:08:44 2019 +0200
@@ -12,39 +12,39 @@
marker registers a relation between an old obsoleted changeset and its newer
version.
-Old changesets are called **precursors** while their new versions are called
-**successors**. A marker always registers a single *precursor* and:
+Old changesets are called **predecessors** while their new versions are called
+**successors**. A marker always registers a single *predecessor* and:
-- no *successor*: the *precursor* is just discarded.
-- one *successor*: the *precursor* has been rewritten
-- multiple *successors*: the *precursor* were splits in multiple
+- no *successor*: the *predecessor* is just discarded.
+- one *successor*: the *predecessor* has been rewritten
+- multiple *successors*: the *predecessor* were splits in multiple
changesets.
-.. The *precursors* and *successors* terms can be used on changeset directly:
+.. The *predecessors* and *successors* terms can be used on changeset directly:
-.. :precursors: of a changeset `A` are changesets used as *precursors* by
+.. :predecessors: of a changeset `A` are changesets used as *predecessors* by
.. obsolete marker using changeset `A` as *successors*
.. :successors: of a changeset `B` are changesets used as *successors* by
-.. obsolete marker using changeset `B` as *precursors*
+.. obsolete marker using changeset `B` as *predecessors*
Chaining obsolete markers is allowed to rewrite a changeset that is already a
*successor*. This is a kind of *second order version control*.
-To clarify ambiguous situations one can use **direct precursors** or
+To clarify ambiguous situations one can use **direct predecessors** or
**direct successors** to name changesets that are directly related.
The set of all *obsolete markers* forms a direct acyclic graph the same way
standard *parents*/*children* relation does. In this graph we have:
-:any precursors: are transitive precursors of a changeset: *direct precursors*
- and *precursors* of *precursors*.
+:any predecessors: are transitive predecessors of a changeset: *direct predecessors*
+ and *predecessors* of *predecessors*.
:any successors: are transitive successors of a changeset: *direct successors*
and *successors* of *successors*)
Obsolete markers may refer changesets that are not known locally.
-So, *direct precursors* of a changeset may be unknown locally.
-This is why we usually focus on the **first known precursors** of the rewritten
+So, *direct predecessors* of a changeset may be unknown locally.
+This is why we usually focus on the **first known predecessors** of the rewritten
changeset. The same apply for *successors*.
Changeset in *any successors* which are not **obsolete** are called
@@ -66,13 +66,13 @@
| | | |
| Changeset in either | Obsolete changeset is | *extinct* changeset is |
| *draft* or *secret* | *mutable* used as a | *obsolete* which has only |
-| phase. | *precursor*. | *obsolete* descendants. |
+| phase. | *predecessor*. | *obsolete* descendants. |
| | | |
| | A changeset is used as | They can safely be: |
-| | a *precursor* when at | |
+| | a *predecessor* when at | |
| | least one obsolete | - hidden in the UI, |
| | marker refers to it | - silently excluded from |
-| | as precursors. | pull and push operations |
+| | as predecessors. | pull and push operations |
| | | - mostly ignored |
| | | - garbage collected |
| | | |
@@ -92,30 +92,31 @@
| | | |
| +--------------------------+-----------------------------+
| | | |
-| | **troubled** | **unstable** |
+| | **unstable** | **orphan** |
| | | |
-| | *troubled* has | *unstable* is a changeset |
+| | *unstable* has | *orphan* is a changeset |
| | unresolved issue caused | with obsolete ancestors. |
| | by *obsolete* relations. | |
| | | |
| | Possible issues are | It must be rebased on a |
-| | listed in the next | non *troubled* base to |
+| | listed in the next | non *unstable* base to |
| | column. It is possible | solve the problem. |
-| | for *troubled* | |
+| | for *unstable* | |
| | changeset to combine | (possible alternative name: |
| | multiple issue at once. | precarious) |
-| | (a.k.a. divergent and | |
-| | unstable) +-----------------------------+
+| | (a.k.a. content-divergent| |
+| | and orphan) +-----------------------------+
| | | |
-| | (possible alternative | **bumped** |
+| | (possible alternative | **phase-divergent** |
| | names: unsettled, | |
-| | troublesome | *bumped* is a changeset |
-| | | that tries to be successor |
-| | | of public changesets. |
+| | troublesome | *phase-divergent* is a |
+| | | changeset that tries to be |
+| | | successor of a public |
+| | | changeset. |
| | | |
| | | Public changeset can't |
| | | be deleted and replace |
-| | | *bumped* |
+| | | *phase-divergent* |
| | | need to be converted into |
| | | an overlay to this public |
| | | changeset. |
@@ -125,17 +126,18 @@
| | | mindless, disenchanting) |
| | | |
| | +-----------------------------+
-| | | **divergent** |
+| | | **content-divergent** |
| | | |
-| | | *divergent* is changeset |
-| | | that appears when multiple |
-| | | changesets are successors |
-| | | of the same precursor. |
+| | | *content-divergent* is a |
+| | | changeset that appears when |
+| | | multiple changesets are |
+| | | successors of the same |
+| | | predecessor. |
| | | |
-| | | *divergent* are solved |
-| | | through a three ways merge |
-| | | between the two |
-| | | *divergent* , |
+| | | *content-divergent* are |
+| | | solved through a three way |
+| | | merge between the two |
+| | | *content-divergent* , |
| | | using the last "obsolete- |
| | | -common-ancestor" as the |
| | | base. |
@@ -151,7 +153,7 @@
| +--------------------------+-----------------------------+
| | |
| | Mutable changesets which are neither *obsolete* or |
-| | *troubled* are *"ok"*. |
+| | *unstable* are *"ok"*. |
| | |
| | Do we really need a name for it ? *"ok"* is a pretty |
| | crappy name :-/ other possibilities are: |
@@ -168,8 +170,8 @@
| |
| Rewriting operation refuse to work on immutable changeset. |
| |
-| Obsolete markers that refer an immutable changeset as precursors have |
-| no effect on the precursors but may have effect on the successors. |
+| Obsolete markers that refer an immutable changeset as predecessors have |
+| no effect on the predecessors but may have effect on the successors. |
| |
| When a *mutable* changeset becomes *immutable* (changing its phase from draft|
| to public) it is just *immutable* and loose any property of it's former |
@@ -226,7 +228,7 @@
``````
Automatically resolve *troublesome* changesets
-(*unstable*, *bumped* and *divergent*)
+(*orphan*, *phase-divergent* and *content-divergent*)
This is an important name as hg pull/push will suggest it the same way it
suggest merging when you add heads.
--- a/docs/sharing.rst Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/sharing.rst Tue Jun 04 11:08:44 2019 +0200
@@ -433,7 +433,7 @@
It's not enough just to update ``public``, though! Other people also
use the ``review`` repository, and right now it doesn't have Bob's
latest amendment ("v3", revision 6:540b), nor does it know that the
-precursor of that changeset ("v2", revision 5:0eb7) is obsolete. Thus,
+predecessor of that changeset ("v2", revision 5:0eb7) is obsolete. Thus,
Bob pushes to ``review`` as well::
$ hg push ../review
@@ -508,12 +508,12 @@
but every competent chef keeps several around. Ever try to chop onions
with a spoon?)
-In the user guide, we saw examples of *unstbale* changesets, which are
-the most common type of troubled changeset. (Recall that a
+In the user guide, we saw examples of *orphan* changesets, which are
+the most common type of unstable changeset. (Recall that a
non-obsolete changeset with obsolete ancestors is an orphan.)
-Two other types of troubles can happen: *divergent* and
-*bumped* changesets. Both are more likely with shared mutable
+Two other types of instability can happen: *content-divergent* and
+*phase-divergent* changesets. Both are more likely with shared mutable
history, especially mutable history shared by multiple developers.
Setting up
@@ -556,11 +556,11 @@
and add the same text.
-Example 6: Divergent changesets
-===============================
+Example 6: Content-divergent changesets
+=======================================
When an obsolete changeset has two successors, those successors are
-*divergent*. One way to get into such a situation is by failing
+*content-divergent*. One way to get into such a situation is by failing
to communicate with your teammates. Let's see how that might happen.
First, we'll have Bob commit a bug fix that could still be improved::
@@ -596,11 +596,11 @@
[...]
added 1 changesets with 1 changes to 2 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
- 2 new divergent changesets
+ 2 new content-divergent changesets
Figure 9 shows the situation in Bob's repository.
- [figure SG09: Bob's repo with 2 heads for the 2 divergent changesets, 6:a360 and 7:e3f9; wc is at 6:a360; both are successors of obsolete 4:2fe6, hence divergence]
+ [figure SG09: Bob's repo with 2 heads for the 2 content-divergent changesets, 6:a360 and 7:e3f9; wc is at 6:a360; both are successors of obsolete 4:2fe6, hence divergence]
Now we need to get out of trouble. As usual, the answer is to evolve
history. ::
@@ -619,7 +619,7 @@
(``internal:other``) that will take Alice's changes over Bob's. (You
might wonder why Bob wouldn't prefer his own changes by using
``internal:local``. He's avoiding a `bug`_ in ``evolve`` that occurs
-when evolving divergent changesets using ``internal:local``.)
+when evolving content-divergent changesets using ``internal:local``.)
# XXX this link does not work
.. _`bug`: https://bitbucket.org/marmoute/mutable-history/issue/48/
@@ -685,25 +685,25 @@
2:e011 is now public, so it can't be obsolete. When that changeset was
obsolete, it made perfect sense for it to have a successor, namely
Bob's amendment of Alice's fix (changeset 4:fe88). But it's illogical
-for a public changeset to have a successor, so 4:fe88 is troubled:
-it has become *bumped*.
+for a public changeset to have a successor, so 4:fe88 is unstable:
+it has become *phase-divergent*.
- [figure SG07: 2:e011 now public not obsolete, 4:fe88 now bumped]
+ [figure SG07: 2:e011 now public not obsolete, 4:fe88 now phase-divergent]
As usual when there's trouble in your repository, the solution is to
evolve it::
$ hg evolve --all
-Figure 8 illustrates Bob's repository after evolving away the bumped
+Figure 8 illustrates Bob's repository after evolving away the phase-divergent
changeset. Ignoring the obsolete changesets, Bob now has a nice,
clean, simple history. His amendment of Alice's bug fix lives on, as
changeset 5:227d—albeit with a software-generated commit message. (Bob
should probably amend that changeset to improve the commit message.)
But the important thing is that his repository no longer has any
-troubled changesets, thanks to ``evolve``.
+unstable changesets, thanks to ``evolve``.
- [figure SG08: 5:227d is new, formerly bumped changeset 4:fe88 now hidden]
+ [figure SG08: 5:227d is new, formerly phase-divergent changeset 4:fe88 now hidden]
Conclusion
----------
@@ -713,7 +713,7 @@
dull knife (never mind a rusty spoon). At the same time, an
inattentive or careless user can do harm to himself or others.
Mercurial with ``evolve`` goes to great lengths to limit the harm you
-can do by trying to handle all possible types of “troubled”
+can do by trying to handle all possible types of “unstable”
changesets. Nevertheless, having a first-aid kit nearby does not mean
you should stop being careful with sharp knives.
--- a/docs/tutorial/draft.md Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/tutorial/draft.md Tue Jun 04 11:08:44 2019 +0200
@@ -527,7 +527,7 @@
}
~~~
-## Unstable
+## Orphan
~~~graphviz
digraph G {
@@ -538,21 +538,21 @@
node[group=main];
Root -> New;
node[group=obsolete];
- Root -> Obsolete -> Unstable;
+ Root -> Obsolete -> Orphan;
// Obsolescence links
edge[dir=back, style=dotted, arrowtail=dot];
Obsolete -> New;
Obsolete [fillcolor="#DFDFFF"];
- Unstable [fillcolor="#FF3535"];
+ Orphan [fillcolor="#FF3535"];
Root[shape="circle"];
}
~~~
-## Bumped
+## Phase-divergent
-## Divergent
+## Content-divergent
~~~graphviz
digraph G {
@@ -561,17 +561,17 @@
node[fixedsize=true, style="filled", width=1, height=1, fillcolor="#7F7FFF", shape="pentagon"];
Root -> Base;
- Root -> Divergent1;
- Root -> Divergent2;
+ Root -> Content-divergent1;
+ Root -> Content-divergent2;
// Obsolescence links
edge[dir=back, style=dotted, arrowtail=dot];
- Base -> Divergent1;
- Base -> Divergent2;
+ Base -> Content-divergent1;
+ Base -> Content-divergent2;
Base [shape="pentagon", fillcolor="#DFDFFF"];
- Divergent1 [fillcolor="#FF3535"];
- Divergent2 [fillcolor="#FF3535"];
+ Content-divergent1 [fillcolor="#FF3535"];
+ Content-divergent2 [fillcolor="#FF3535"];
Root[shape="circle"];
}
~~~
--- a/docs/tutorial/slides.md Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/tutorial/slides.md Tue Jun 04 11:08:44 2019 +0200
@@ -275,7 +275,7 @@
Notice the `x` in the log output which shows that a changeset is hidden.
-In addition to hiding the original changeset, we are also storing additional information which is recording the relation between a changeset, the **precursor** and its **successor**. It basically stores the information that the commit **X** was rewritten into the commit **Y** by the user **U** at the date **D**. This piece of information is stored in something called an **obsolescence marker**. It will be displayed like this:
+In addition to hiding the original changeset, we are also storing additional information which is recording the relation between a changeset, the **predecessor** and its **successor**. It basically stores the information that the commit **X** was rewritten into the commit **Y** by the user **U** at the date **D**. This piece of information is stored in something called an **obsolescence marker**. It will be displayed like this:
~~~graphviz-file
graphs/fix-bug-3.dot
@@ -285,7 +285,7 @@
##### Rebase
-**Successors** don't need to share anything with their **precursor**. They could have a different description message, user, date or even parents.
+**Successors** don't need to share anything with their **predecessor**. They could have a different description message, user, date or even parents.
Let's look at our earlier rebase example. The status before the rebase was:
@@ -345,7 +345,7 @@
output/under-the-hood-amend-after-obslog-patch.log
~~~
-Obslog works both ways, as it can display **precursors** and **successors** with the `--all` option:
+Obslog works both ways, as it can display **predecessors** and **successors** with the `--all` option:
```raw-file
output/under-the-hood-amend-after-obslog-no-all.log
@@ -852,13 +852,13 @@
output/edit-mid-stack.log
```
-The message `1 new orphan changesets` means that, by amending a changeset having a child, this child is now **unstable**, as we can see with the `hg stack` command:
+The message `1 new orphan changesets` means that, by amending a changeset having a child, this child is now **orphan**, as we can see with the `hg stack` command:
```raw-file
output/edit-mid-stack-after-stack.log
```
-`hg stack` tries to simplify the view for you. We have amended **b2**, and **b3**'s parent is the precursor version of **b2**, so it is not stable any more. It is now **orphan**.
+`hg stack` tries to simplify the view for you. We have amended **b2**, and **b3**'s parent is the predecessor version of **b2**, so it is not stable any more. It is now **orphan**.
For once, let's use log to see in detail in which situation we are:
@@ -909,7 +909,7 @@
output/basic-stabilize-before-log-obsolete.log
```
-A changeset can also be **unstable**, meaning that it could be subject to one or more **instabilities**:
+A changeset can also be **orphan**, meaning that it could be subject to one or more **instabilities**:
* **orphan**, a changeset whose an ancestor is **obsolete**.
* **content-divergent**, a changeset which has been rewritten in two different versions.
@@ -1130,9 +1130,9 @@
À deux:
-- troubles, divergence, orphan
-- troubles visualization
-- troubles resolution
+- instability, divergence, orphan
+- instability visualization
+- instability resolution
- collaboration workflow
Parler du happy path d'abord -->
@@ -1501,7 +1501,7 @@
$> hg update --rev t1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$> hg commit --amend -m "Step1"
-<span style="color:gold;">3 new unstable changesets</span>
+<span style="color:gold;">3 new orphan changesets</span>
</pre>
#### What have we done?
@@ -1510,11 +1510,11 @@
$> hg log -G -T compact
@ <span style="color:olive;">9</span>[tip] 1aa1be5ada40 Step1
|
-| o <span style="color:olive;">8</span> cf90b2de7e65 Step4 <span style="color:red;">(unstable)</span>
+| o <span style="color:olive;">8</span> cf90b2de7e65 Step4 <span style="color:red;">(orphan)</span>
| |
-| o <span style="color:olive;">7</span> e208d4205c8e Step3 <span style="color:red;">(unstable)</span>
+| o <span style="color:olive;">7</span> e208d4205c8e Step3 <span style="color:red;">(orphan)</span>
| |
-| o <span style="color:olive;">6</span> 673ff300cf3a Step2 <span style="color:red;">(unstable)</span>
+| o <span style="color:olive;">6</span> 673ff300cf3a Step2 <span style="color:red;">(orphan)</span>
| |
| <span style="color:grey;">x 5 8bb88a31dd28 Step</span>
|/
@@ -1528,9 +1528,9 @@
$> hg stack
###### topic: <span style="color:green;">myfeature</span>
###### branch: feature
-<span style="color:olive;">t4</span><span style="color:red;">$</span> Step4<span style="color:red;"> (unstable)</span>
-<span style="color:olive;">t3</span><span style="color:red;">$</span> Step3<span style="color:red;"> (unstable)</span>
-<span style="color:olive;">t2</span><span style="color:red;">$</span> Step2<span style="color:red;"> (unstable)</span>
+<span style="color:olive;">t4</span><span style="color:red;">$</span> Step4<span style="color:red;"> (orphan)</span>
+<span style="color:olive;">t3</span><span style="color:red;">$</span> Step3<span style="color:red;"> (orphan)</span>
+<span style="color:olive;">t2</span><span style="color:red;">$</span> Step2<span style="color:red;"> (orphan)</span>
<span style="color:teal;">t1</span><span style="color:teal;font-weight:bold;">@</span> <span style="color:teal;">Step1</span><span style="color:teal;font-weight:bold;"> (current)</span>
<span style="color:grey;">t0^ Trunk</span>
</pre>
@@ -1545,8 +1545,8 @@
$> hg stack
###### topic: <span style="color:green;">myfeature</span>
###### branch: feature
-<span style="color:olive;">t4</span><span style="color:red;">$</span> Step4<span style="color:red;"> (unstable)</span>
-<span style="color:olive;">t3</span><span style="color:red;">$</span> Step3<span style="color:red;"> (unstable)</span>
+<span style="color:olive;">t4</span><span style="color:red;">$</span> Step4<span style="color:red;"> (orphan)</span>
+<span style="color:olive;">t3</span><span style="color:red;">$</span> Step3<span style="color:red;"> (orphan)</span>
<span style="color:teal;">t2</span><span style="color:teal;font-weight:bold;">@</span> <span style="color:teal;">Step2</span><span style="color:teal;font-weight:bold;"> (current)</span>
<span style="color:olive;">t1</span><span style="color:green;">:</span> Step1
<span style="color:grey;">t0^ Trunk</span>
@@ -1566,7 +1566,7 @@
$> hg stack
###### topic: <span style="color:green;">myfeature</span>
###### branch: feature
-<span style="color:olive;">t4</span><span style="color:red;">$</span> Step4<span style="color:red;"> (unstable)</span>
+<span style="color:olive;">t4</span><span style="color:red;">$</span> Step4<span style="color:red;"> (orphan)</span>
<span style="color:teal;">t3</span><span style="color:teal;font-weight:bold;">@</span> <span style="color:teal;">Step3</span><span style="color:teal;font-weight:bold;"> (current)</span>
<span style="color:olive;">t2</span><span style="color:green;">:</span> Step2
<span style="color:olive;">t1</span><span style="color:green;">:</span> Step1
@@ -1838,13 +1838,13 @@
<pre>
$> hg summary
-<span style="color:olive;">parent: 10:890ac95deb83 </span>tip (unstable)
+<span style="color:olive;">parent: 10:890ac95deb83 </span>tip (orphan)
Head
branch: feature
commit: (clean)
update: (current)
phases: 9 draft
-unstable: <span style="color:red;">1 changesets</span>
+orphan: <span style="color:red;">1 changesets</span>
topic: <span style="color:green;">myfeature</span>
</pre>
@@ -1864,7 +1864,7 @@
packaging
prev-next
split
- stack_unstable_bug
+ stack_orphan_bug
tutorial
* tutorialtypos
</pre>
@@ -1883,7 +1883,7 @@
obscache (2 months ago)
evolvecolor (2 months ago)
obsrangecacheiterative (2 months ago)
- stack_unstable_bug (2 months ago)
+ stack_orphan_bug (2 months ago)
doc (3 months ago)
split (3 months ago)
import-checker (4 months ago)
@@ -1906,9 +1906,9 @@
packaging (on branch: default, 1 changesets, <span style="color:teal;">2521 behind</span>)
prev-next (on branch: default, 4 changesets, <span style="color:teal;">72 behind</span>)
split (on branch: default, 1 changesets, <span style="color:teal;">492 behind</span>)
- stack_unstable_bug (on branch: default, 1 changesets, <span style="color:teal;">474 behind</span>)
+ stack_orphan_bug (on branch: default, 1 changesets, <span style="color:teal;">474 behind</span>)
tutorial (on branch: default, 2 changesets, <span style="color:teal;">492 behind</span>)
-<span style="color:green;"> * </span><span style="color:green;">tutorialtypos </span> (on branch: default, 3 changesets, <span style="color:red;">1 troubled</span>, <span style="color:olive;">2 heads</span>, <span style="color:teal;">2 behind</span>)
+<span style="color:green;"> * </span><span style="color:green;">tutorialtypos </span> (on branch: default, 3 changesets, <span style="color:red;">1 unstable</span>, <span style="color:olive;">2 heads</span>, <span style="color:teal;">2 behind</span>)
</pre>
#### Log
@@ -1919,7 +1919,7 @@
|
o 23abfc79b7ce
|
-| o 4302274177b9 <span style="color:red;">(unstable)</span>
+| o 4302274177b9 <span style="color:red;">(orphan)</span>
| |
| <span style="color:grey;">x fba593aaaa10</span>
|/ rewritten as c55cb2ee8a91;
@@ -1931,10 +1931,10 @@
<pre>
$> hg evolve --list
<span style="color:gold;">9ac0d376e01c</span>: changelog: introduce a 'tiprev' method
- <span style="color:red;">unstable</span>: <span style="color:grey;">52ec3072fe46</span> (obsolete parent)
+ <span style="color:red;">orphan</span>: <span style="color:grey;">52ec3072fe46</span> (obsolete parent)
<span style="color:gold;">3efd3eab9860</span>: changelog: use 'tiprev()' in 'tip()'
- <span style="color:red;">unstable</span>: <span style="color:red;">9ac0d376e01c</span> (unstable parent)
+ <span style="color:red;">orphan</span>: <span style="color:red;">9ac0d376e01c</span> (orphan parent)
</pre>
(see also `hg evolve --list --rev`)
@@ -2025,7 +2025,7 @@
</table>
-## Troubles
+## Instability
#### Evolution
@@ -2033,7 +2033,7 @@
* Hide **most** of the complexity
-* Help with unstable situations
+* Help with orphan situations
- Automatic detection
@@ -2041,7 +2041,7 @@
#### instability
-(currently: *troubles*)
+(currently: *instability*)
* **Orphans:** ancestors were rewritten
@@ -2091,7 +2091,7 @@
<img src="https://media.giphy.com/media/46vrhWWOJ4wHC/giphy.gif">
-## extra - Troubles
+## extra - Instability
#### Obsolete
@@ -2116,7 +2116,7 @@
}
~~~
-#### Unstable
+#### Orphan
Now called `orphan`
@@ -2129,19 +2129,19 @@
node[group=main];
Root -> New;
node[group=obsolete];
- Root -> Obsolete -> Unstable;
+ Root -> Obsolete -> Orphan;
// Obsolescence links
edge[dir=back, style=dotted, arrowtail=dot];
Obsolete -> New;
Obsolete [fillcolor="#DFDFFF"];
- Unstable [fillcolor="#FF3535"];
+ Orphan [fillcolor="#FF3535"];
Root[shape="circle"];
}
~~~
-#### Bumped
+#### Phase-divergent
Now called `Phase-divergent`
@@ -2155,22 +2155,22 @@
Root -> New;
node[group=obsolete];
Root -> Obsolete;
- node[group=bumped];
- Root -> Bumped;
+ node[group=phase-divergent];
+ Root -> Phase-divergent;
// Obsolescence links
edge[dir=back, style=dotted, arrowtail=dot];
Obsolete -> New;
- Obsolete -> Bumped;
+ Obsolete -> Phase-divergent;
New [shape="circle"];
Obsolete [fillcolor="#DFDFFF"];
- Bumped [fillcolor="#FF3535"];
+ Phase-divergent [fillcolor="#FF3535"];
Root[shape="circle"];
}
~~~
-#### Divergent
+#### Content-divergent
Now called `Content-divergent`
@@ -2181,17 +2181,17 @@
node[fixedsize=true, style="filled", width=1, height=1, fillcolor="#7F7FFF", shape="pentagon"];
Root -> Base;
- Root -> Divergent1;
- Root -> Divergent2;
+ Root -> Content-divergent1;
+ Root -> Content-divergent2;
// Obsolescence links
edge[dir=back, style=dotted, arrowtail=dot];
- Base -> Divergent1;
- Base -> Divergent2;
+ Base -> Content-divergent1;
+ Base -> Content-divergent2;
Base [shape="pentagon", fillcolor="#DFDFFF"];
- Divergent1 [fillcolor="#FF3535"];
- Divergent2 [fillcolor="#FF3535"];
+ Content-divergent1 [fillcolor="#FF3535"];
+ Content-divergent2 [fillcolor="#FF3535"];
Root[shape="circle"];
}
~~~
--- a/docs/tutorial/test-training.t Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/tutorial/test-training.t Tue Jun 04 11:08:44 2019 +0200
@@ -550,7 +550,7 @@
+Fix bug
- $ html_output $TESTDIR/output/amend-obslog-all-after.log obslog --all -G -r "precursors(typo)" --hidden
+ $ html_output $TESTDIR/output/amend-obslog-all-after.log obslog --all -G -r "predecessors(typo)" --hidden
@ <span style="color:olive;">708369dc1bfe</span> <span style="color:blue;">(17)</span> Fix bug
|
x <span style="color:olive;">5d48a444aba7</span> <span style="color:blue;">(1)</span> Fx bug
@@ -1002,7 +1002,7 @@
Amend
- $ html_output $TESTDIR/output/behind-the-hood-amend-before-hash-hidden.log log -G -r "::precursors(typo)" --hidden
+ $ html_output $TESTDIR/output/behind-the-hood-amend-before-hash-hidden.log log -G -r "::predecessors(typo)" --hidden
x <span style="color:olive;">changeset: 1:5d48a444aba7</span>
| branch: typo
| user: Boris Feld <boris.feld@octobus.net>
@@ -1016,7 +1016,7 @@
summary: ROOT
-XXX Remove the command line to avoid showing precursors and hidden revset
+XXX Remove the command line to avoid showing predecessors and hidden revset
$ tail -n +2 $TESTDIR/output/behind-the-hood-amend-before-hash-hidden.log | tee $TESTDIR/output/behind-the-hood-amend-before-hash-hidden.log
x <span style="color:olive;">changeset: 1:5d48a444aba7</span>
@@ -1121,7 +1121,7 @@
Rebase
- $ html_output $TESTDIR/output/behind-the-hood-rebase-before-hash-hidden.log log -G -r "::branch(build/v2) or ::precursors('build/linuxsupport-v2')" --hidden
+ $ html_output $TESTDIR/output/behind-the-hood-rebase-before-hash-hidden.log log -G -r "::branch(build/v2) or ::predecessors('build/linuxsupport-v2')" --hidden
o <span style="color:olive;">changeset: 6:0e694460372e</span>
| branch: build/v2
| parent: 2:f3bd0ab4ee87
@@ -2455,7 +2455,7 @@
$ html_output $TESTDIR/output/edit-mid-stack-after-stack.log stack
### target: build/linuxsupport-v2 (branch)
- <span style="color:olive;">b3</span><span style="color:red;">$</span> Third commit on build/linuxsupport-v2<span style="color:red;"> (unstable)</span>
+ <span style="color:olive;">b3</span><span style="color:red;">$</span> Third commit on build/linuxsupport-v2<span style="color:red;"> (orphan)</span>
<span style="color:teal;">b2</span><span style="color:teal;font-weight:bold;">@</span> <span style="color:teal;">Second commit on build/linuxsupport-v2</span><span style="color:teal;font-weight:bold;"> (current)</span>
<span style="color:olive;">b1</span><span style="color:green;">:</span> First commit on build/linuxsupport-v2
b0^ New commit on build/v2 (base)
@@ -2550,7 +2550,7 @@
19 -> 20 [penwidth=2.0];
}
-Basic troubles + stabilization
+Basic instability + stabilization
------------------------------
$ cp -R $TESTTMP/evolve_training_repo $TESTDIR/base-repos/edit-mid-stack/
@@ -2579,7 +2579,7 @@
$ html_output $TESTDIR/output/basic-stabilize-before-evolve-list.log evolve --list
3d2c8a2356a2: Third commit on build/linuxsupport-v2
- unstable: 4686378320d7 (obsolete parent)
+ orphan: 4686378320d7 (obsolete parent)
$ html_output $TESTDIR/output/basic-stabilize-next-evolve.log next --evolve
move:[<span style="color:blue;">20</span>] Third commit on build/linuxsupport-v2
@@ -2593,7 +2593,7 @@
<span style="color:olive;">b1</span><span style="color:green;">:</span> First commit on build/linuxsupport-v2
b0^ New commit on build/v2 (base)
- $ graph $TESTDIR/graphs/basic-stabilize-after-stack.dot -T "{shortest(node, 8)}" -r "(::. + ::precursors(.)) and branch(build/linuxsupport-v2)" --hidden --public=yes
+ $ graph $TESTDIR/graphs/basic-stabilize-after-stack.dot -T "{shortest(node, 8)}" -r "(::. + ::predecessors(.)) and branch(build/linuxsupport-v2)" --hidden --public=yes
Wrote */graphs/basic-stabilize-after-stack.dot (glob)
.. graphviz::
--- a/docs/user-guide.rst Sat Jun 01 02:30:14 2019 +0200
+++ b/docs/user-guide.rst Tue Jun 04 11:08:44 2019 +0200
@@ -239,10 +239,7 @@
.. figure:: figures/figure-ug02.svg
Figure 2: safe history modification using ``evolve``: the original
- revision 1 is preserved as an obsolete changeset. (The "temporary
- amend commit", marked with T, is an implementation detail stemming
- from limitations in Mercurial's current merge machinery. Future
- versions of Mercurial will not create them.)
+ revision 1 is preserved as an obsolete changeset.
In this case, the obsolete changesets are also *hidden*. That is the
usual end state for obsolete changesets. However, many scenarios result
@@ -256,21 +253,19 @@
As the name implies, hidden changesets are normally not visible. If
you run ``hg log`` on the repository from Figure 2, Mercurial will
-show revisions 0 and 3, but not 1 and 2. That's something you don't
+show revisions 0 and 2, but not 1. That's something you don't
see with plain vanilla Mercurial—normally, revision *N* is always
followed by revision *N* + 1.
This is just the visible manifestation of hidden changesets. If
-revision 0 is followed by revision 3, that means there are two hidden
-changesets, 1 and 2, in between.
+revision 0 is followed by revision 2, that means there is a hidden
+changeset, (1) in between.
To see those hidden changesets, use the ``--hidden`` option::
$ hg --hidden log --graph --template '{rev}:{node|short} {desc|firstline}\n'
- @ 3:934359450037 implement feature Y
+ @ 2:934359450037 implement feature Y
|
- | x 2:6c5f78d5d467 temporary amend commit for fe0ecd3bd2a4
- | |
| x 1:fe0ecd3bd2a4 implement feature Y
|/
o 0:08c4b6f4efc8 init
@@ -288,7 +283,7 @@
``prune`` (example 4 above) is the simplest history modification
command provided by ``evolve``. All it does is mark the specified
-changeset(s) obsolete, with no successor/precursor relationships
+changeset(s) obsolete, with no successor/predecessor relationships
involved. (If the working directory parent was one of the obsoleted
changesets, ``prune`` updates back to a suitable ancestor.)
@@ -336,7 +331,7 @@
So far, every obsolete changeset we have seen is also hidden. However,
these are *not* the same thing—that's why they have different names.
It's entirely possible to have obsolete changesets that are not
-hidden. We'll see examples of that soon, when we create *unstable*
+hidden. We'll see examples of that soon, when we create *orphan*
changesets.
Note that all hidden changesets are obsolete: hidden is a subset of
@@ -349,15 +344,15 @@
Now that you've got a solid understanding of how ``evolve`` works in
concert with changeset obsolescence, let's explore some more advanced
-scenarios. All of these scenarios will involve *unstable* changesets,
+scenarios. All of these scenarios will involve *orphan* changesets,
which is an unavoidable consequence of obsolescence. What really sets
``evolve`` apart from other history modification mechanisms is the
-fact that it recognizes troubles like unstable changesets and provides
+fact that it recognizes instability like orphan changesets and provides
a consistent way for you to get back to a stable repository.
-(Incidentally, there are two other types of troubles that changesets
-can get into with ``evolve``: they may be *divergent* or
-*bumped*. Both of those states are more likely to occur when
+(Incidentally, there are two other types of instability that changesets
+can get into with ``evolve``: they may be *content-divergent* or
+*phase-divergent*. Both of those states are more likely to occur when
`sharing mutable history`_, so we won't cover them in this user guide.)
.. _`sharing mutable history`: sharing.html
@@ -393,17 +388,16 @@
$ hg amend
At this point, revision 11 is *obsolete* and revisions 12 and 13—the
-descendants of 11—are in a funny state: they are *unstable*.
+descendants of 11—are in a funny state: they are *orphan*.
.. figure:: figures/figure-ug06.svg
Figure 6: amending a changeset with descendants means the amended
changeset is obsolete but remains visible; its non-obsolete
- descendants are *unstable*. The temporary amend commit, revision
- 14, is hidden because it has no non-obsolete descendants.
+ descendants are *orphan*.
All non-obsolete descendants of an obsolete changeset are considered
-unstable. An interesting consequence of this is that revision 11 is
+orphans. An interesting consequence of this is that revision 11 is
still visible, even though it is obsolete. Obsolete changesets with
non-obsolete descendants are not hidden.
@@ -420,12 +414,12 @@
The end state, after ``evolve`` finishes, is that the original
revisions (11-13) are obsolete and hidden. Their successor revisions
-(15-17) replace them.
+(14-16) replace them.
.. figure:: figures/figure-ug07.svg
Figure 7: evolve your repository (``hg evolve --all``) to take care
- of instability. Unstable changesets become obsolete, and are
+ of instability. Orphan changesets become obsolete, and are
replaced by successors just like the amended changeset was.
Example 8: Prune an older changeset
@@ -441,19 +435,19 @@
$ hg prune 19
1 changesets pruned
- 1 new unstable changesets
+ 1 new orphan changesets
As above, this leaves your repository in a funny intermediate state:
revision 20 is the non-obsolete descendant of obsolete revision 19.
-That is, revision 20 is unstable.
+That is, revision 20 is an orphan.
.. figure:: figures/figure-ug08.svg
Figure 8: ``hg prune`` marks a changeset obsolete without creating
a successor. Just like with ``hg amend``, non-obsolete descendants
- of the pruned changeset are now unstable.
+ of the pruned changeset are now orphans.
-As before, the solution to unstable changesets is to evolve your
+As before, the solution to orphan changesets is to evolve your
repository::
$ hg evolve --all
@@ -485,11 +479,11 @@
$ hg update 22
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg uncommit file2.c
- 1 new unstable changesets
+ 1 new orphan changesets
$ hg status
M file2.c
-Now your repository has unstable changesets, so you need to evolve it.
+Now your repository has orphan changesets, so you need to evolve it.
However, ``hg evolve`` requires a clean working directory to resolve merge
conflicts, so you need to decide what to do with ``file2.c``.
@@ -530,7 +524,7 @@
$ hg update -q 26
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg uncommit -q file2.c # obsoletes rev 26, creates rev 28
- 1 new unstable changesets
+ 1 new orphan changesets
$ hg status
M file2.c
@@ -541,7 +535,7 @@
Figure 11 shows the story so far: ``uncommit`` obsoleted revision 26
and created revision 28, the successor of 26. Then we committed
revision 29, a child of 28. We still have to deal with the revision 27,
-which is an unstable changeset.
+which is an orphan changeset.
.. figure:: figures/figure-ug11.svg
@@ -549,7 +543,7 @@
separately will soon result in a two-headed repository.
This is where things get tricky. As usual when a repository has
-unstable changesets, we want to evolve it::
+orphan changesets, we want to evolve it::
$ hg evolve --all
@@ -561,7 +555,7 @@
.. figure:: figures/figure-ug12.svg
- Figure 12: ``evolve`` takes care of unstable changesets; it does
+ Figure 12: ``evolve`` takes care of orphan changesets; it does
not solve all the world's problems.
As usual when faced with a two-headed repository, you can either merge
@@ -594,7 +588,7 @@
change in the future. Consider the history in Figure 12, where revision 27
is obsolete and the child of 26, also obsolete. If we ``hg touch 27``, that
creates a new revision which is a non-obsolete child of 26—i.e., it is an
-unstable. It's also *divergent*, another type of trouble that we'll learn
+orphan. It's also *content-divergent*, another type of trouble that we'll learn
about in the `next section`_.
.. _`next section`: sharing.html
--- a/hgext3rd/evolve/__init__.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/evolve/__init__.py Tue Jun 04 11:08:44 2019 +0200
@@ -296,6 +296,7 @@
metadata,
obscache,
obsexchange,
+ obshashtree,
obshistory,
rewind,
rewriteutil,
@@ -345,6 +346,7 @@
eh.merge(debugcmd.eh)
eh.merge(evolvecmd.eh)
eh.merge(obsexchange.eh)
+eh.merge(obshashtree.eh)
eh.merge(safeguard.eh)
eh.merge(obscache.eh)
eh.merge(obshistory.eh)
@@ -497,16 +499,16 @@
def _installalias(ui):
if ui.config('alias', 'odiff', None) is None:
ui.setconfig('alias', 'odiff',
- "diff --hidden --rev 'limit(precursors(.),1)' --rev .",
+ "diff --hidden --rev 'limit(predecessors(.),1)' --rev .",
'evolve')
-### Troubled revset symbol
+### Unstable revset symbol
-@eh.revsetpredicate('troubled()')
-def revsettroubled(repo, subset, x):
- """Changesets with troubles.
+@eh.revsetpredicate('unstable()')
+def revsetunstable(repo, subset, x):
+ """Changesets with instabilities.
"""
- revset.getargs(x, 0, 0, 'troubled takes no arguments')
+ revset.getargs(x, 0, 0, 'unstable takes no arguments')
troubled = set()
troubled.update(getrevs(repo, 'orphan'))
troubled.update(getrevs(repo, 'phasedivergent'))
@@ -515,6 +517,10 @@
troubled.sort() # set is non-ordered, enforce order
return subset & troubled
+@eh.revsetpredicate('troubled()') # legacy name
+def revsettroubled(repo, subset, x):
+ return revsetunstable(repo, subset, x)
+
### Obsolescence graph
# XXX SOME MAJOR CLEAN UP TO DO HERE XXX
@@ -620,9 +626,9 @@
return subset & suspended
-@eh.revsetpredicate('precursors(set)')
-def revsetprecursors(repo, subset, x):
- """Immediate precursors of changesets in set.
+@eh.revsetpredicate('predecessors(set)')
+def revsetpredecessors(repo, subset, x):
+ """Immediate predecessors of changesets in set.
"""
s = revset.getset(repo, revset.fullreposet(repo), x)
s = revset.baseset(_precursors(repo, s))
@@ -630,9 +636,14 @@
return subset & s
-@eh.revsetpredicate('allprecursors(set)')
-def revsetallprecursors(repo, subset, x):
- """Transitive precursors of changesets in set.
+@eh.revsetpredicate('precursors(set)') # legacy name for predecessors
+def revsetprecursors(repo, subset, x):
+ return revsetpredecessors(repo, subset, x)
+
+
+@eh.revsetpredicate('allpredecessors(set)')
+def revsetallpredecessors(repo, subset, x):
+ """Transitive predecessors of changesets in set.
"""
s = revset.getset(repo, revset.fullreposet(repo), x)
s = revset.baseset(_allprecursors(repo, s))
@@ -640,6 +651,11 @@
return subset & s
+@eh.revsetpredicate('allprecursors(set)') # legacy name for allpredecessors
+def revsetallprecursors(repo, subset, x):
+ return revsetallpredecessors(repo, subset, x)
+
+
@eh.revsetpredicate('successors(set)')
def revsetsuccessors(repo, subset, x):
"""Immediate successors of changesets in set.
@@ -1148,13 +1164,18 @@
cmdutil.bailifchanged(repo)
evolvestate = state.cmdstate(repo, opts={'command': 'next',
'bookmarkchanges': []})
- result = evolvecmd._solveone(ui, repo, repo[aspchildren],
- evolvestate, opts.get('dry_run'), False,
- lambda: None, category='orphan',
- stacktmplt=opts.get('stacktemplate', False))
+ with repo.wlock(), repo.lock():
+ tr = repo.transaction("evolve")
+ with util.acceptintervention(tr):
+ result = evolvecmd._solveone(ui, repo, repo[aspchildren],
+ evolvestate, opts.get('dry_run'),
+ False,
+ lambda: None, category='orphan',
+ stacktmplt=opts.get('stacktemplate',
+ False))
# making sure a next commit is formed
if result[0] and result[1]:
- ui.status(_('working directory now at %s\n')
+ ui.status(_('working directory is now at %s\n')
% ui.label(str(repo['.']), 'evolve.node'))
return 0
--- a/hgext3rd/evolve/cmdrewrite.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/evolve/cmdrewrite.py Tue Jun 04 11:08:44 2019 +0200
@@ -149,11 +149,7 @@
def amendpatch(ui, repo, *pats, **opts):
"""logic for --patch flag of `hg amend` command."""
- lock = wlock = tr = None
- try:
- wlock = repo.wlock()
- lock = repo.lock()
- tr = repo.transaction('amend')
+ with repo.wlock(), repo.lock(), repo.transaction('amend') as tr:
cmdutil.bailifchanged(repo)
# first get the patch
old = repo['.']
@@ -180,11 +176,6 @@
metadata=metadata)
phases.retractboundary(repo, tr, old.phase(), [newnode])
hg.updaterepo(repo, newnode, True)
- tr.close()
- finally:
- if tr is not None:
- tr.release()
- lockmod.release(lock, wlock)
def _editandapply(ui, repo, pats, old, p1, fp, diffopts):
newnode = None
@@ -866,11 +857,7 @@
raise error.Abort(_('revisions must be specified with --fold'))
revs = ['.']
- wlock = lock = None
- try:
- wlock = repo.wlock()
- lock = repo.lock()
-
+ with repo.wlock(), repo.lock():
revs = scmutil.revrange(repo, revs)
if not opts['fold'] and len(revs) > 1:
# TODO: handle multiple revisions. This is somewhat tricky because
@@ -950,8 +937,6 @@
ui.status('%i changesets folded\n' % len(revs))
if newp1 is not None:
hg.update(repo, newp1)
- finally:
- lockmod.release(lock, wlock)
metadataopts = [
('d', 'date', '',
@@ -1121,7 +1106,7 @@
bmchanges = [(bookactive, newnode.node())]
repo._bookmarks.applychanges(repo, tr, bmchanges)
commands.update(ui, repo, newnode.hex())
- ui.status(_('working directory now at %s\n')
+ ui.status(_('working directory is now at %s\n')
% ui.label(str(newnode), 'evolve.node'))
if movebookmark:
bookmarksmod.activate(repo, bookactive)
@@ -1348,8 +1333,6 @@
This is used to "resurrect" changesets
"""
_checknotesize(ui, opts)
- duplicate = opts['duplicate']
- allowdivergence = opts['allowdivergence']
revs = list(revs)
revs.extend(opts['rev'])
if not revs:
@@ -1358,71 +1341,74 @@
if not revs:
ui.write_err('no revision to touch\n')
return 1
+
+ duplicate = opts['duplicate']
if not duplicate:
rewriteutil.precheck(repo, revs, 'touch')
tmpl = utility.shorttemplate
displayer = compat.changesetdisplayer(ui, repo, {'template': tmpl})
- wlock = lock = tr = None
- try:
- wlock = repo.wlock()
- lock = repo.lock()
+ with repo.wlock(), repo.lock():
tr = repo.transaction('touch')
- revs.sort() # ensure parent are run first
- newmapping = {}
- for r in revs:
- ctx = repo[r]
- extra = ctx.extra().copy()
- extra['__touch-noise__'] = random.randint(0, 0xffffffff)
- # search for touched parent
- p1 = ctx.p1().node()
- p2 = ctx.p2().node()
- p1 = newmapping.get(p1, p1)
- p2 = newmapping.get(p2, p2)
+ with util.acceptintervention(tr):
+ touchnodes(ui, repo, revs, displayer, **opts)
+
+def touchnodes(ui, repo, revs, displayer, **opts):
+ duplicate = opts['duplicate']
+ allowdivergence = opts['allowdivergence']
+ revs.sort() # ensure parent are run first
+ newmapping = {}
+ for r in revs:
+ ctx = repo[r]
+ extra = ctx.extra().copy()
+ extra['__touch-noise__'] = random.randint(0, 0xffffffff)
+ # search for touched parent
+ p1 = ctx.p1().node()
+ p2 = ctx.p2().node()
+ p1 = newmapping.get(p1, p1)
+ p2 = newmapping.get(p2, p2)
- if not (duplicate or allowdivergence):
- # The user hasn't yet decided what to do with the revived
- # cset, let's ask
- sset = obsutil.successorssets(repo, ctx.node())
- nodivergencerisk = (len(sset) == 0
- or (len(sset) == 1
- and len(sset[0]) == 1
- and repo[sset[0][0]].rev() == ctx.rev()
- ))
- if nodivergencerisk:
+ if not (duplicate or allowdivergence):
+ # The user hasn't yet decided what to do with the revived
+ # cset, let's ask
+ sset = obsutil.successorssets(repo, ctx.node())
+ nodivergencerisk = (len(sset) == 0
+ or (len(sset) == 1
+ and len(sset[0]) == 1
+ and repo[sset[0][0]].rev() == ctx.rev()
+ ))
+ if nodivergencerisk:
+ duplicate = False
+ else:
+ displayer.show(ctx)
+ index = ui.promptchoice(
+ _("reviving this changeset will create divergence"
+ " unless you make a duplicate.\n(a)llow divergence or"
+ " (d)uplicate the changeset? $$ &Allowdivergence $$ "
+ "&Duplicate"), 0)
+ choice = ['allowdivergence', 'duplicate'][index]
+ if choice == 'allowdivergence':
duplicate = False
else:
- displayer.show(ctx)
- index = ui.promptchoice(
- _("reviving this changeset will create divergence"
- " unless you make a duplicate.\n(a)llow divergence or"
- " (d)uplicate the changeset? $$ &Allowdivergence $$ "
- "&Duplicate"), 0)
- choice = ['allowdivergence', 'duplicate'][index]
- if choice == 'allowdivergence':
- duplicate = False
- else:
- duplicate = True
+ duplicate = True
+
+ extradict = {'extra': extra}
+ new, unusedvariable = rewriteutil.rewrite(repo, ctx, [], ctx,
+ [p1, p2],
+ commitopts=extradict)
+ # store touched version to help potential children
+ newmapping[ctx.node()] = new
- extradict = {'extra': extra}
- new, unusedvariable = rewriteutil.rewrite(repo, ctx, [], ctx,
- [p1, p2],
- commitopts=extradict)
- # store touched version to help potential children
- newmapping[ctx.node()] = new
-
- if not duplicate:
- metadata = {}
- if opts.get('note'):
- metadata['note'] = opts['note']
- obsolete.createmarkers(repo, [(ctx, (repo[new],))],
- metadata=metadata, operation="touch")
- phases.retractboundary(repo, tr, ctx.phase(), [new])
- if ctx in repo[None].parents():
- with repo.dirstate.parentchange():
- repo.dirstate.setparents(new, node.nullid)
- tr.close()
- finally:
- lockmod.release(tr, lock, wlock)
+ if not duplicate:
+ metadata = {}
+ if opts.get('note'):
+ metadata['note'] = opts['note']
+ obsolete.createmarkers(repo, [(ctx, (repo[new],))],
+ metadata=metadata, operation="touch")
+ tr = repo.currenttransaction()
+ phases.retractboundary(repo, tr, ctx.phase(), [new])
+ if ctx in repo[None].parents():
+ with repo.dirstate.parentchange():
+ repo.dirstate.setparents(new, node.nullid)
@eh.command(
'pick|grab',
--- a/hgext3rd/evolve/evolvecmd.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/evolve/evolvecmd.py Tue Jun 04 11:08:44 2019 +0200
@@ -64,6 +64,8 @@
formed. newnode can be node, when resolution led to no new
commit. If bool is False, this is ".".
"""
+ tr = repo.currenttransaction()
+ assert tr is not None
displayer = None
if stacktmplt:
displayer = compat.changesetdisplayer(ui, repo,
@@ -71,21 +73,20 @@
else:
displayer = compat.changesetdisplayer(ui, repo,
{'template': shorttemplate})
- with repo.wlock(), repo.lock(), repo.transaction("evolve"):
- if 'orphan' == category:
- result = _solveunstable(ui, repo, ctx, evolvestate, displayer,
- dryrun, confirm, progresscb,
- lastsolved=lastsolved)
- elif 'phasedivergent' == category:
- result = _solvephasedivergence(ui, repo, ctx, evolvestate,
- displayer, dryrun, confirm,
- progresscb)
- elif 'contentdivergent' == category:
- result = _solvedivergent(ui, repo, ctx, evolvestate, displayer,
- dryrun, confirm, progresscb)
- else:
- assert False, "unknown trouble category: %s" % (category)
- return result
+ if 'orphan' == category:
+ result = _solveunstable(ui, repo, ctx, evolvestate, displayer,
+ dryrun, confirm, progresscb,
+ lastsolved=lastsolved)
+ elif 'phasedivergent' == category:
+ result = _solvephasedivergence(ui, repo, ctx, evolvestate,
+ displayer, dryrun, confirm,
+ progresscb)
+ elif 'contentdivergent' == category:
+ result = _solvedivergent(ui, repo, ctx, evolvestate, displayer,
+ dryrun, confirm, progresscb)
+ else:
+ assert False, "unknown trouble category: %s" % (category)
+ return result
def _solveunstable(ui, repo, orig, evolvestate, displayer, dryrun=False,
confirm=False, progresscb=None, lastsolved=None):
@@ -166,10 +167,10 @@
displayer.show(target)
if confirm and ui.prompt('perform evolve? [Ny]', 'n') != 'y':
raise error.Abort(_('evolve aborted by user'))
- if progresscb:
- progresscb()
todo = 'hg rebase -r %s -d %s\n' % (orig, target)
if dryrun:
+ if progresscb:
+ progresscb()
repo.ui.write(todo)
return (False, ".")
else:
@@ -180,12 +181,11 @@
newid = relocate(repo, orig, target, evolvestate, pctx,
keepbranch, 'orphan')
return (True, newid)
- except MergeFailure:
+ except error.InterventionRequired:
ops = {'current': orig.node()}
evolvestate.addopts(ops)
evolvestate.save()
- raise error.InterventionRequired(_("fix conflicts and see `hg help "
- "evolve.interrupted`"))
+ raise
def _solvephasedivergence(ui, repo, bumped, evolvestate, displayer,
dryrun=False, confirm=False, progresscb=None):
@@ -204,7 +204,7 @@
msg = _('skipping %s : we do not handle merge yet\n') % bumped
ui.write_err(msg)
return (False, ".")
- prec = repo.set('last(allprecursors(%d) and public())', bumped.rev()).next()
+ prec = repo.set('last(allpredecessors(%d) and public())', bumped.rev()).next()
# For now we deny target merge
if len(prec.parents()) > 1:
msg = _('skipping: %s: public version is a merge, '
@@ -249,12 +249,11 @@
operation='evolve')
bumped = new
evolvestate['temprevs'].append(newnode)
- except MergeFailure:
+ except error.InterventionRequired:
evolvestate['current'] = bumped.hex()
evolvestate['precursor'] = prec.hex()
evolvestate.save()
- raise error.InterventionRequired(_("fix conflicts and see `hg help "
- "evolve.interrupted`"))
+ raise
return _resolvephasedivergent(ui, repo, prec, bumped)
@@ -276,43 +275,22 @@
newid = None
replacementnode = None
- # Create the new commit context
- files = set()
- copied = copies.pathcopies(prec, bumped)
- precmanifest = prec.manifest().copy()
- # 3.3.2 needs a list.
- # future 3.4 don't detect the size change during iteration
- # this is fishy
- for key, val in list(bumped.manifest().iteritems()):
- precvalue = precmanifest.get(key, None)
- if precvalue is not None:
- del precmanifest[key]
- if precvalue != val:
- files.add(key)
- files.update(precmanifest) # add missing files
-
- # commit it
- if files: # something to commit!
- def filectxfn(repo, ctx, path):
- if path in bumped:
- fctx = bumped[path]
- flags = fctx.flags()
- mctx = compat.memfilectx(repo, ctx, fctx, flags, copied, path)
- return mctx
- return None
+ # Create the new commit context. This is done by applying the changes from
+ # the precursor to the bumped node onto the precursor. This is effectively
+ # like reverting to the bumped node.
+ wctx = context.overlayworkingctx(repo)
+ wctx.setbase(prec)
+ merge.update(repo, bumped.node(), ancestor=prec, mergeancestor=True,
+ branchmerge=True, force=False, wc=wctx)
+ if not wctx.isempty():
text = '%s update to %s:\n\n' % (TROUBLES['PHASEDIVERGENT'], prec)
text += bumped.description()
-
- new = context.memctx(repo,
- parents=[prec.node(), nodemod.nullid],
- text=text,
- files=files,
- filectxfn=filectxfn,
- user=bumped.user(),
- date=bumped.date(),
- extra=bumped.extra())
-
- newid = repo.commitctx(new)
+ memctx = wctx.tomemctx(text,
+ parents=(prec.node(), nodemod.nullid),
+ date=bumped.date(),
+ extra=bumped.extra(),
+ user=bumped.user())
+ newid = repo.commitctx(memctx)
replacementnode = newid
if newid is None:
repo.ui.status(_('no changes to commit\n'))
@@ -535,11 +513,10 @@
try:
newother = relocate(repo, other, divergent.p1(), evolvestate,
keepbranch=True)
- except MergeFailure:
+ except error.InterventionRequired:
evolvestate['current'] = other.node()
evolvestate.save()
- raise error.InterventionRequired(_("fix conflicts and see `hg help "
- "evolve.interrupted`"))
+ raise
evolvestate['old-other'] = other.node()
other = repo[newother]
evolvestate['relocating'] = False
@@ -554,16 +531,26 @@
if not haspubdiv:
return (res, newnode)
else:
- # when we have content-divergence with a public cset: after completing
- # content divergence resolution the resulting node will be phase
- # divergent with that same public cset.
- # here newnode is phase divergent, lets resolve this divergence.
+ # we have content-divergence with a public cset:
+ # after performing content divergence resolution steps, possbile cases:
+ # 1) merging results in a new node:
+ # we need to perform phase divergence resolution
+ # 2) merging leads to same content as public cset:
+ # divergence has been resolved by creating markers
if not res:
# resolution was not successful, return
return (res, newnode)
if newnode == publicdiv.node():
- # no changes were found that are different from public cset
+ # case 2)
+ pubstr = str(publicdiv)
+ othstr = str(other)
+ msg = _('content divergence resolution between %s '
+ '(public) and %s has same content as %s, '
+ 'discarding %s\n')
+ msg %= (pubstr, othstr, pubstr, othstr)
+ repo.ui.status(msg)
return (res, newnode)
+ # case 1)
prec = publicdiv
bumped = repo[newnode]
return _resolvephasedivergent(ui, repo, prec=prec, bumped=bumped)
@@ -571,12 +558,12 @@
def _mergecontentdivergents(repo, progresscb, divergent, other, base,
evolvestate):
if divergent not in repo[None].parents():
- repo.ui.status(_("updating to \"local\" side of the conflict: %s\n") %
- divergent.hex()[:12])
+ repo.ui.note(_("updating to \"local\" side of the conflict: %s\n") %
+ divergent.hex()[:12])
hg.updaterepo(repo, divergent.node(), False)
# merging the two content-divergent changesets
- repo.ui.status(_("merging \"other\" %s changeset '%s'\n") %
- (TROUBLES['CONTENTDIVERGENT'], other.hex()[:12]))
+ repo.ui.note(_("merging \"other\" %s changeset '%s'\n") %
+ (TROUBLES['CONTENTDIVERGENT'], other.hex()[:12]))
if progresscb:
progresscb()
mergeancestor = repo.changelog.isancestor(divergent.node(), other.node())
@@ -590,8 +577,6 @@
# conflicts while merging content-divergent changesets
if compat.hasconflict(stats):
- tr = repo.currenttransaction()
- tr.close()
evolvestate.save()
raise error.InterventionRequired(_("fix conflicts and see `hg help "
"evolve.interrupted`"))
@@ -626,10 +611,7 @@
s = publicdiv.status()
if not (s.added or s.removed or s.deleted or s.modified):
# warn user if metadata is being lost
- if otherdiv.description() != publicdiv.description():
- msg = _('content-divergent changesets differ by descriptions '
- 'only, discarding %s\n') % str(otherdiv)
- repo.ui.warn(msg)
+ warnmetadataloss(repo, publicdiv, otherdiv)
# no changes, create markers to resolve divergence
obsolete.createmarkers(repo, [(otherdiv, (publicdiv,))],
operation='evolve')
@@ -646,13 +628,14 @@
desc = mergecommitmessages(ui, base.description(),
divergent.description(),
other.description())
+ user = utility.mergeusers(ui, base, divergent, other)
# new node if any formed as the replacement
newnode = None
mergehook(repo, base, divergent, other)
- newnode = repo.commit(text=desc, user=other.user())
+ newnode = repo.commit(text=desc, user=user)
if newnode == divergent.node() or newnode is None:
# no changes
new = divergent
@@ -686,6 +669,45 @@
finally:
repo.ui.restoreconfig(emtpycommitallowed)
+def warnmetadataloss(repo, local, other):
+ """warn the user for the metadata being lost while resolving
+ public content-divergence"""
+
+ # needtowarn: aspects where we need to warn user
+ needtowarn = ['branch', 'topic', 'close']
+ aspects = set()
+ localextra = local.extra()
+ otherextra = other.extra()
+
+ for asp in needtowarn:
+ otherasp = otherextra.get(asp)
+ localasp = localextra.get(asp)
+ if otherasp and otherasp != localasp:
+ aspects.add(asp)
+
+ if other.description() != local.description():
+ aspects.add('description')
+
+ if aspects:
+ # warn user
+ locstr = str(local)
+ othstr = str(other)
+ if 'close' in aspects:
+ filteredasp = aspects - {'close'}
+ if filteredasp:
+ msg = _('other divergent changeset %s is a closed branch head '
+ 'and differs from local %s by "%s" only,' %
+ (othstr, locstr, ', '.join(sorted(filteredasp))))
+ else:
+ msg = _('other divergent changeset %s is a closed branch head '
+ 'and has same content as local %s,' % (othstr, locstr))
+ else:
+ msg = _('other divergent changeset %s has same content as local %s'
+ ' and differs by "%s" only,' %
+ (othstr, locstr, ', '.join(sorted(aspects))))
+ msg += _(' discarding %s\n' % othstr)
+ repo.ui.warn(msg)
+
def bypassphase(repo, relation, flag=0, metadata=None, operation='evolve'):
"""function to create a single obsmarker relation even for public csets
where relation should be a single pair (prec, succ)"""
@@ -868,9 +890,6 @@
return desc
-class MergeFailure(error.Abort):
- pass
-
def _orderrevs(repo, revs):
"""Compute an ordering to solve instability for the given revs
@@ -956,25 +975,18 @@
tr = repo.currenttransaction()
assert tr is not None
- try:
- r = _evolvemerge(repo, orig, dest, pctx, keepbranch)
- if compat.hasconflict(r): # some conflict
- raise error.Abort(_('unresolved merge conflicts '
- '(see hg help resolve)'))
- nodenew = _relocatecommit(repo, orig, commitmsg)
- except error.Abort as exc:
+ r = _evolvemerge(repo, orig, dest, pctx, keepbranch)
+ if compat.hasconflict(r): # some conflict
with repo.dirstate.parentchange():
repo.setparents(dest.node(), orig.node())
repo.dirstate.write(tr)
# fix up dirstate for copies and renames
- copies.duplicatecopies(repo, repo[None], dest.rev(), orig.p1().rev())
+ copies.duplicatecopies(repo, repo[None], dest.rev(),
+ orig.p1().rev())
dirstatedance(repo, dest, orig.node(), None)
-
- class LocalMergeFailure(MergeFailure, exc.__class__):
- pass
- exc.__class__ = LocalMergeFailure
- tr.close() # to keep changes in this transaction (e.g. dirstate)
- raise
+ raise error.InterventionRequired(_("fix conflicts and see `hg help "
+ "evolve.interrupted`"))
+ nodenew = _relocatecommit(repo, orig, commitmsg)
_finalizerelocate(repo, orig, dest, nodenew, tr, category, evolvestate)
return nodenew
@@ -1109,7 +1121,7 @@
XXX this woobly function won't survive XXX
"""
repo = ctx._repo.unfiltered()
- for base in repo.set('reverse(allprecursors(%d))', ctx.rev()):
+ for base in repo.set('reverse(allpredecessors(%d))', ctx.rev()):
newer = obsutil.successorssets(ctx._repo, base.node())
# drop filter and solution including the original ctx
newer = [n for n in newer if n and ctx.node() not in n]
@@ -1186,7 +1198,7 @@
"orphan": repo.revs("orphan()"),
"contentdivergent": repo.revs("contentdivergent()"),
"phasedivergent": repo.revs("phasedivergent()"),
- "all": repo.revs("troubled()"),
+ "all": repo.revs("unstable()"),
}
hintmap = {
@@ -1307,7 +1319,7 @@
ctx = repo[rev]
unpars = _preparelistctxs(ctx.parents(), lambda p: p.orphan())
obspars = _preparelistctxs(ctx.parents(), lambda p: p.obsolete())
- imprecs = _preparelistctxs(repo.set("allprecursors(%n)", ctx.node()),
+ imprecs = _preparelistctxs(repo.set("allpredecessors(%n)", ctx.node()),
lambda p: not p.mutable())
dsets = divergentsets(repo, ctx)
@@ -1436,10 +1448,7 @@
return opts
-def _cleanup(ui, repo, startnode, showprogress, shouldupdate):
- if showprogress:
- compat.progress(ui, _('evolve'), None)
-
+def _cleanup(ui, repo, startnode, shouldupdate):
if not shouldupdate:
# Move back to startnode, or to its successor if the start node is
# obsolete (perhaps made obsolete by the current `hg evolve`)
@@ -1491,9 +1500,9 @@
('', 'content-divergent', False, _('solves only content-divergent changesets')),
('', 'unstable', False, _('solves only unstable changesets (DEPRECATED)')),
('', 'orphan', False, _('solves only orphan changesets (default)')),
- ('a', 'all', False, _('evolve all troubled changesets related to the '
- 'current working directory and its descendants')),
- ('', 'update', True, _('update to the head of evolved changesets')),
+ ('a', 'all', None, _('evolve all troubled changesets related to the current'
+ ' working directory and its descendants (default)')),
+ ('', 'update', False, _('update to the head of evolved changesets')),
('c', 'continue', False, _('continue an interrupted evolution')),
('', 'stop', False, _('stop the interrupted evolution')),
('', 'abort', False, _('abort the interrupted evolution')),
@@ -1526,8 +1535,8 @@
intention, and gives a hint about what you might want to do next.
Any time evolve creates a changeset, it updates the working copy to the new
- changeset. (Currently, every successful evolve operation involves an update
- as well; this may change in future.)
+ changeset. Using ``--update`` will make evolve perform an update after any
+ successful evolve operation.
Automatic mode only handles common use cases. For example, it avoids taking
action in the case of ambiguity, and it ignores orphan changesets that are
@@ -1536,9 +1545,9 @@
unless you explicitly request such behavior (see below).
Eliminating all instability around your working copy may require multiple
- invocations of :hg:`evolve`. Alternately, use ``--all`` to recursively
- select and evolve all orphan changesets that can be rebased onto the
- working copy parent.
+ invocations of :hg:`evolve` if you use ``--rev`` or ``--no-all``. Use
+ ``--all`` (which is the default behavior) to recursively select and evolve
+ all orphan changesets that can be rebased onto the working copy parent.
This is more powerful than successive invocations, since ``--all`` handles
ambiguous cases (e.g. orphan changesets with multiple children) by evolving
all branches.
@@ -1601,6 +1610,8 @@
contopt = opts['continue']
anyopt = opts['any']
allopt = opts['all']
+ if allopt is None:
+ allopt = True
startnode = repo['.'].node()
dryrunopt = opts['dry_run']
confirmopt = opts['confirm']
@@ -1630,16 +1641,6 @@
return solveobswdp(ui, repo, opts)
ui.setconfig('ui', 'forcemerge', opts.get('tool', ''), 'evolve')
- troubled = set(repo.revs('troubled()'))
-
- # Progress handling
- seen = 1
- count = allopt and len(troubled) or 1
- showprogress = allopt
-
- def progresscb():
- if revopt or allopt:
- compat.progress(ui, _('evolve'), seen, unit=_('changesets'), total=count)
evolvestate = state.cmdstate(repo)
# Continuation handling
@@ -1647,7 +1648,7 @@
if not evolvestate:
raise error.Abort(_('no interrupted evolve to continue'))
evolvestate.load()
- continueevolve(ui, repo, evolvestate, progresscb)
+ continueevolve(ui, repo, evolvestate)
if evolvestate['command'] != 'evolve':
evolvestate.delete()
return
@@ -1693,8 +1694,16 @@
if not revs:
return _handlenotrouble(ui, repo, allopt, revopt, anyopt, targetcat)
- # For the progress bar to show
+ # Progress handling
+ seen = 1
+ showprogress = allopt or revopt
count = len(revs)
+
+ def progresscb():
+ if showprogress:
+ compat.progress(ui, _('evolve'), seen, unit=_('changesets'),
+ total=count)
+
# Order the revisions
revs = _orderrevs(repo, revs)
@@ -1711,42 +1720,60 @@
lastsolved = None
activetopic = getattr(repo, 'currenttopic', '')
- for rev in revs:
- curctx = repo[rev]
- revtopic = getattr(curctx, 'topic', lambda: '')()
- topicidx = getattr(curctx, 'topicidx', lambda: None)()
- stacktmplt = False
- # check if revision being evolved is in active topic to make sure
- # that we can use stack aliases s# in evolve msgs.
- if activetopic and (activetopic == revtopic) and topicidx is not None:
- stacktmplt = True
- progresscb()
- ret = _solveone(ui, repo, curctx, evolvestate, dryrunopt,
- confirmopt, progresscb, targetcat,
- lastsolved=lastsolved, stacktmplt=stacktmplt)
- seen += 1
- if ret[0]:
- evolvestate['replacements'][curctx.node()] = ret[1]
- lastsolved = ret[1]
- else:
- evolvestate['skippedrevs'].append(curctx.node())
+ with repo.wlock(), repo.lock():
+ tr = repo.transaction("evolve")
+ with util.acceptintervention(tr):
+ for rev in revs:
+ lastsolved = _solveonerev(ui, repo, rev, evolvestate,
+ activetopic, dryrunopt,
+ confirmopt, progresscb,
+ targetcat, lastsolved)
+ seen += 1
+
+ if showprogress:
+ compat.progress(ui, _('evolve'), None)
+
+ _cleanup(ui, repo, startnode, shouldupdate)
+
+def _solveonerev(ui, repo, rev, evolvestate, activetopic, dryrunopt, confirmopt,
+ progresscb, targetcat, lastsolved):
+ """solves one trouble, including orphan merges
- if evolvestate['orphanmerge']:
- # we were processing an orphan merge with both parents obsolete,
- # stabilized for second parent, re-stabilize for the first parent
- ret = _solveone(ui, repo, repo[ret[1]], evolvestate, dryrunopt,
- confirmopt, progresscb, targetcat,
- stacktmplt=stacktmplt)
- if ret[0]:
- evolvestate['replacements'][curctx.node()] = ret[1]
- lastsolved = ret[1]
- else:
- evolvestate['skippedrevs'].append(curctx.node())
+ Like _solveone(), this solves one trouble. Unlike _solveone(), it
+ stabilizes for both parents of orphan merges.
+ """
+ curctx = repo[rev]
+ revtopic = getattr(curctx, 'topic', lambda: '')()
+ topicidx = getattr(curctx, 'topicidx', lambda: None)()
+ stacktmplt = False
+ # check if revision being evolved is in active topic to make sure
+ # that we can use stack aliases s# in evolve msgs.
+ if activetopic and (activetopic == revtopic) and topicidx is not None:
+ stacktmplt = True
+ progresscb()
+ ret = _solveone(ui, repo, curctx, evolvestate, dryrunopt,
+ confirmopt, progresscb, targetcat,
+ lastsolved=lastsolved, stacktmplt=stacktmplt)
+ if ret[0]:
+ evolvestate['replacements'][curctx.node()] = ret[1]
+ lastsolved = ret[1]
+ else:
+ evolvestate['skippedrevs'].append(curctx.node())
- evolvestate['orphanmerge'] = False
+ if evolvestate['orphanmerge']:
+ # we were processing an orphan merge with both parents obsolete,
+ # stabilized for second parent, re-stabilize for the first parent
+ ret = _solveone(ui, repo, repo[ret[1]], evolvestate, dryrunopt,
+ confirmopt, progresscb, targetcat,
+ stacktmplt=stacktmplt)
+ if ret[0]:
+ evolvestate['replacements'][curctx.node()] = ret[1]
+ lastsolved = ret[1]
+ else:
+ evolvestate['skippedrevs'].append(curctx.node())
- progresscb()
- _cleanup(ui, repo, startnode, showprogress, shouldupdate)
+ evolvestate['orphanmerge'] = False
+ return lastsolved
def solveobswdp(ui, repo, opts):
"""this function updates to the successor of obsolete wdir parent"""
@@ -1867,16 +1894,11 @@
# no backup of evolved cset versions needed
repair.strip(repo.ui, repo, strippoints, False)
- tr = None
- try:
- tr = repo.transaction('evolve')
+ with repo.transaction('evolve') as tr:
# restoring bookmarks at there original place
bmchanges = evolvestate['bookmarkchanges']
if bmchanges:
repo._bookmarks.applychanges(repo, tr, bmchanges)
- tr.close()
- finally:
- tr.release()
evolvestate.delete()
ui.status(_('evolve aborted\n'))
@@ -1886,7 +1908,7 @@
raise error.Abort(_("unable to abort interrupted evolve, use 'hg "
"evolve --stop' to stop evolve"))
-def continueevolve(ui, repo, evolvestate, progresscb):
+def continueevolve(ui, repo, evolvestate):
"""logic for handling of `hg evolve --continue`"""
with repo.wlock(), repo.lock():
@@ -1898,22 +1920,34 @@
elif evolvestate['category'] == 'phasedivergent':
_completephasedivergent(ui, repo, evolvestate)
elif evolvestate['category'] == 'contentdivergent':
- _continuecontentdivergent(ui, repo, evolvestate, progresscb)
+ _continuecontentdivergent(ui, repo, evolvestate, None)
else:
repo.ui.status(_("continuing interrupted '%s' resolution is not yet"
" supported\n") % evolvestate['category'])
return
# make sure we are continuing evolve and not `hg next --evolve`
- if evolvestate['command'] == 'evolve':
- category = evolvestate['category']
- confirm = evolvestate['confirm']
- unfi = repo.unfiltered()
- # lastsolved: keep track of successor of last troubled cset we
- # evolved to confirm that if atop msg should be suppressed to remove
- # redundancy
- lastsolved = None
- activetopic = getattr(repo, 'currenttopic', '')
+ if evolvestate['command'] != 'evolve':
+ return
+
+ # Progress handling
+ seen = 1
+ count = len(evolvestate['revs'])
+
+ def progresscb():
+ compat.progress(ui, _('evolve'), seen, unit=_('changesets'),
+ total=count)
+
+ category = evolvestate['category']
+ confirm = evolvestate['confirm']
+ unfi = repo.unfiltered()
+ # lastsolved: keep track of successor of last troubled cset we
+ # evolved to confirm that if atop msg should be suppressed to remove
+ # redundancy
+ lastsolved = None
+ activetopic = getattr(repo, 'currenttopic', '')
+ tr = repo.transaction("evolve")
+ with util.acceptintervention(tr):
for rev in evolvestate['revs']:
# XXX: prevent this lookup by storing nodes instead of revnums
curctx = unfi[rev]
@@ -1937,13 +1971,12 @@
lastsolved = newnode[1]
else:
evolvestate['skippedrevs'].append(curctx.node())
- return
+ seen += 1
def _continuecontentdivergent(ui, repo, evolvestate, progresscb):
"""function to continue the interrupted content-divergence resolution."""
- tr = None
- try:
- tr = repo.transaction('evolve')
+ tr = repo.transaction('evolve')
+ with util.acceptintervention(tr):
divergent = evolvestate['divergent']
base = evolvestate['base']
repo = repo.unfiltered()
@@ -1986,10 +2019,7 @@
prec = repo[publicnode]
bumped = repo[newnode]
ret = _resolvephasedivergent(ui, repo, prec=prec, bumped=bumped)
- tr.close()
return ret
- finally:
- tr.release()
def _completephasedivergent(ui, repo, evolvestate):
"""function to complete the interrupted phase-divergence resolution.
@@ -1997,10 +2027,8 @@
First completes the relocation of the commit and then process resolving
phase-divergence"""
- tr = None
- try:
- # need to start transaction for bookmark changes
- tr = repo.transaction('evolve')
+ # need to start transaction for bookmark changes
+ with repo.transaction('evolve'):
node = _completerelocation(ui, repo, evolvestate)
evolvestate['temprevs'].append(node)
# resolving conflicts can lead to empty wdir and node can be None in
@@ -2013,9 +2041,6 @@
prec = repo[evolvestate['precursor']]
retvalue = _resolvephasedivergent(ui, repo, prec, newctx)
evolvestate['replacements'][ctx.node()] = retvalue[1]
- tr.close()
- finally:
- tr.release()
def _completeorphan(ui, repo, evolvestate):
"""function to complete the interrupted orphan resolution"""
--- a/hgext3rd/evolve/metadata.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/evolve/metadata.py Tue Jun 04 11:08:44 2019 +0200
@@ -5,7 +5,7 @@
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
-__version__ = '8.5.1'
-testedwith = '4.4.2 4.5.2 4.6.2 4.7 4.8 4.9 5.0'
-minimumhgversion = '4.4'
+__version__ = '8.6.0.dev'
+testedwith = '4.5.2 4.6.2 4.7 4.8 4.9 5.0'
+minimumhgversion = '4.5'
buglink = 'https://bz.mercurial-scm.org/'
--- a/hgext3rd/evolve/obsdiscovery.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/evolve/obsdiscovery.py Tue Jun 04 11:08:44 2019 +0200
@@ -17,7 +17,6 @@
import hashlib
import heapq
-import inspect
import sqlite3
import struct
import weakref
@@ -30,7 +29,6 @@
node,
obsolete,
scmutil,
- setdiscovery,
util,
)
from mercurial.i18n import _
@@ -53,12 +51,6 @@
wireprotov1server = wireprototypes
from mercurial.wireproto import wirepeer, encodelist, decodelist
-try:
- from mercurial import dagutil
- dagutil.revlogdag
-except (ImportError, AttributeError): # <= hg-4.7
- from . import dagutil
-
_pack = struct.pack
_unpack = struct.unpack
_calcsize = struct.calcsize
@@ -77,81 +69,6 @@
### Code performing discovery ###
##################################
-def findcommonobsmarkers(ui, local, remote, probeset,
- initialsamplesize=100,
- fullsamplesize=200):
- # from discovery
- roundtrips = 0
- cl = local.changelog
- dag = dagutil.revlogdag(cl)
- missing = set()
- common = set()
- undecided = set(probeset)
- totalnb = len(undecided)
- heads = [rev for rev in cl.headrevs() if rev != node.nullrev]
- compat.progress(ui, _("comparing with other"), 0, total=totalnb,
- unit=_("changesets"))
- if util.safehasattr(setdiscovery, '_takefullsample'):
- # hg compat <= hg-4.9 (e5ece0f46b40)
- _takefullsample = setdiscovery._takefullsample
- else:
- obsdiscov = setdiscovery.partialdiscovery(local, heads)
- _takefullsample = obsdiscov.takefullsample
- if remote.capable('_evoext_obshash_1'):
- getremotehash = remote.evoext_obshash1
- localhash = _obsrelsethashtreefm1(local)
- else:
- getremotehash = remote.evoext_obshash
- localhash = _obsrelsethashtreefm0(local)
-
- while undecided:
-
- ui.note(_("sampling from both directions\n"))
- if len(undecided) < fullsamplesize:
- sample = set(undecided)
- else:
- if util.safehasattr(setdiscovery, '_takefullsample'):
- # compat <= hg-4.9 (e5ece0f46b40)
- if len(inspect.getargspec(_takefullsample)[0]) == 4:
- # Mercurial 4.8 changed calling convention.
- sample = _takefullsample(local, None, undecided,
- size=fullsamplesize)
- else:
- # hg <= 4.7 version
- sample = _takefullsample(dag, undecided,
- size=fullsamplesize)
- else:
- sample = _takefullsample(None, size=fullsamplesize)
-
- roundtrips += 1
- compat.progress(ui, _("comparing with other"), totalnb - len(undecided),
- total=totalnb, unit=_("changesets"))
- ui.debug("query %i; still undecided: %i, sample size is: %i\n"
- % (roundtrips, len(undecided), len(sample)))
- # indices between sample and externalized version must match
- sample = list(sample)
- remotehash = getremotehash(dag.externalizeall(sample))
-
- yesno = [localhash[ix][1] == remotehash[si]
- for si, ix in enumerate(sample)]
-
- commoninsample = set(n for i, n in enumerate(sample) if yesno[i])
- common.update(dag.ancestorset(commoninsample, common))
-
- missinginsample = [n for i, n in enumerate(sample) if not yesno[i]]
- missing.update(dag.descendantset(missinginsample, missing))
-
- undecided.difference_update(missing)
- undecided.difference_update(common)
-
- compat.progress(ui, _("comparing with other"), None)
- result = dag.headsetofconnecteds(common)
- ui.debug("%d total queries\n" % roundtrips)
-
- if not result:
- return set([node.nullid])
- return dag.externalizeall(result)
-
def findmissingrange(ui, local, remote, probeset,
initialsamplesize=100,
fullsamplesize=200):
@@ -824,161 +741,6 @@
return _obshashrange_capabilities(oldcap, repo, proto)
wireprotov1server.commands['capabilities'] = (newcap, args)
-#############################
-### Tree Hash computation ###
-#############################
-
-# Dash computed from a given changesets using all markers relevant to it and
-# the obshash of its parents. This is similar to what happend for changeset
-# node where the parent is used in the computation
-
-def _canobshashtree(repo, remote):
- return remote.capable('_evoext_obshash_0')
-
-@eh.command(
- 'debugobsrelsethashtree',
- [('', 'v0', None, 'hash on marker format "0"'),
- ('', 'v1', None, 'hash on marker format "1" (default)')], _(''))
-def debugobsrelsethashtree(ui, repo, v0=False, v1=False):
- """display Obsolete markers, Relevant Set, Hash Tree
- changeset-node obsrelsethashtree-node
-
- It computed form the "orsht" of its parent and markers
- relevant to the changeset itself."""
- if v0 and v1:
- raise error.Abort('cannot only specify one format')
- elif v0:
- treefunc = _obsrelsethashtreefm0
- else:
- treefunc = _obsrelsethashtreefm1
-
- for chg, obs in treefunc(repo):
- ui.status('%s %s\n' % (node.hex(chg), node.hex(obs)))
-
-def _obsrelsethashtreefm0(repo):
- return _obsrelsethashtree(repo, obsolete._fm0encodeonemarker)
-
-def _obsrelsethashtreefm1(repo):
- return _obsrelsethashtree(repo, obsolete._fm1encodeonemarker)
-
-def _obsrelsethashtree(repo, encodeonemarker):
- cache = []
- unfi = repo.unfiltered()
- markercache = {}
- compat.progress(repo.ui, _("preparing locally"), 0, total=len(unfi),
- unit=_("changesets"))
- for i in unfi:
- ctx = unfi[i]
- entry = 0
- sha = hashlib.sha1()
- # add data from p1
- for p in ctx.parents():
- p = p.rev()
- if p < 0:
- p = node.nullid
- else:
- p = cache[p][1]
- if p != node.nullid:
- entry += 1
- sha.update(p)
- tmarkers = repo.obsstore.relevantmarkers([ctx.node()])
- if tmarkers:
- bmarkers = []
- for m in tmarkers:
- if m not in markercache:
- markercache[m] = encodeonemarker(m)
- bmarkers.append(markercache[m])
- bmarkers.sort()
- for m in bmarkers:
- entry += 1
- sha.update(m)
- if entry:
- cache.append((ctx.node(), sha.digest()))
- else:
- cache.append((ctx.node(), node.nullid))
- compat.progress(repo.ui, _("preparing locally"), i, total=len(unfi),
- unit=_("changesets"))
- compat.progress(repo.ui, _("preparing locally"), None)
- return cache
-
-def _obshash(repo, nodes, version=0):
- if version == 0:
- hashs = _obsrelsethashtreefm0(repo)
- elif version == 1:
- hashs = _obsrelsethashtreefm1(repo)
- else:
- assert False
- nm = repo.changelog.nodemap
- revs = [nm.get(n) for n in nodes]
- return [r is None and node.nullid or hashs[r][1] for r in revs]
-
-@eh.addattr(localrepo.localpeer, 'evoext_obshash')
-def local_obshash(peer, nodes):
- return _obshash(peer._repo, nodes)
-
-@eh.addattr(localrepo.localpeer, 'evoext_obshash1')
-def local_obshash1(peer, nodes):
- return _obshash(peer._repo, nodes, version=1)
-
-@eh.addattr(wirepeer, 'evoext_obshash')
-def peer_obshash(self, nodes):
- d = self._call("evoext_obshash", nodes=encodelist(nodes))
- try:
- return decodelist(d)
- except ValueError:
- self._abort(error.ResponseError(_("unexpected response:"), d))
-
-@eh.addattr(wirepeer, 'evoext_obshash1')
-def peer_obshash1(self, nodes):
- d = self._call("evoext_obshash1", nodes=encodelist(nodes))
- try:
- return decodelist(d)
- except ValueError:
- self._abort(error.ResponseError(_("unexpected response:"), d))
-
-@compat.wireprotocommand(eh, 'evoext_obshash', 'nodes')
-def srv_obshash(repo, proto, nodes):
- return encodelist(_obshash(repo, decodelist(nodes)))
-
-@compat.wireprotocommand(eh, 'evoext_obshash1', 'nodes')
-def srv_obshash1(repo, proto, nodes):
- return encodelist(_obshash(repo, decodelist(nodes),
- version=1))
-
-def _obshash_capabilities(orig, repo, proto):
- """wrapper to advertise new capability"""
- caps = orig(repo, proto)
- if (obsolete.isenabled(repo, obsolete.exchangeopt)
- and repo.ui.configbool('experimental', 'evolution.obsdiscovery')):
-
- # Compat hg 4.6+ (2f7290555c96)
- bytesresponse = False
- if util.safehasattr(caps, 'data'):
- bytesresponse = True
- caps = caps.data
-
- caps = caps.split()
- caps.append(b'_evoext_obshash_0')
- caps.append(b'_evoext_obshash_1')
- caps.sort()
- caps = b' '.join(caps)
-
- # Compat hg 4.6+ (2f7290555c96)
- if bytesresponse:
- caps = wireprototypes.bytesresponse(caps)
- return caps
-
-@eh.extsetup
-def obshash_extsetup(ui):
- extensions.wrapfunction(wireprotov1server, 'capabilities',
- _obshash_capabilities)
- # wrap command content
- oldcap, args = wireprotov1server.commands['capabilities']
-
- def newcap(repo, proto):
- return _obshash_capabilities(oldcap, repo, proto)
- wireprotov1server.commands['capabilities'] = (newcap, args)
-
##########################################
### trigger discovery during exchange ###
##########################################
@@ -998,19 +760,10 @@
missing += pushop.outgoing.missing
return missing
-def _pushobshashtree(pushop, commonrevs):
- repo = pushop.repo.unfiltered()
- remote = pushop.remote
- node = repo.changelog.node
- common = findcommonobsmarkers(pushop.ui, repo, remote, commonrevs)
- revs = list(repo.revs('only(%ln, %ln)', pushop.futureheads, common))
- return [node(r) for r in revs]
-
# available discovery method, first valid is used
# tuple (canuse, perform discovery))
obsdiscoveries = [
(_canobshashrange, _pushobshashrange),
- (_canobshashtree, _pushobshashtree),
]
obsdiscovery_skip_message = """\
@@ -1094,10 +847,6 @@
% len(revs))
boundaries['missing'] = findmissingrange(repo.ui, unfi, pullop.remote,
revs)
- elif remote.capable('_evoext_obshash_0'):
- obsexcmsg(repo.ui, "looking for common markers in %i nodes\n"
- % len(revs))
- boundaries['common'] = findcommonobsmarkers(repo.ui, unfi, remote, revs)
else:
boundaries['common'] = [node.nullid]
return boundaries
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hgext3rd/evolve/obshashtree.py Tue Jun 04 11:08:44 2019 +0200
@@ -0,0 +1,98 @@
+#############################
+### Tree Hash computation ###
+#############################
+
+# Status: dropable
+#
+# This module don't need to be upstreamed and can be dropped if its maintenance
+# become a burden
+
+import hashlib
+
+from mercurial import (
+ error,
+ node,
+ obsolete,
+)
+
+from mercurial.i18n import _
+
+from . import (
+ compat,
+ exthelper,
+)
+
+eh = exthelper.exthelper()
+
+# Dash computed from a given changesets using all markers relevant to it and
+# the obshash of its parents. This is similar to what happend for changeset
+# node where the parent is used in the computation
+@eh.command(
+ 'debugobsrelsethashtree',
+ [('', 'v0', None, 'hash on marker format "0"'),
+ ('', 'v1', None, 'hash on marker format "1" (default)')], _(''))
+def debugobsrelsethashtree(ui, repo, v0=False, v1=False):
+ """display Obsolete markers, Relevant Set, Hash Tree
+ changeset-node obsrelsethashtree-node
+
+ It computed form the "obs-hash-tree" value of its parent and markers
+ relevant to the changeset itself.
+
+ The obs-hash-tree is no longer used for any user facing logic. However the
+ debug command stayed as an inspection tool. It does not seem supseful to
+ upstream the command with the rest of evolve. We can safely drop it."""
+ if v0 and v1:
+ raise error.Abort('cannot only specify one format')
+ elif v0:
+ treefunc = _obsrelsethashtreefm0
+ else:
+ treefunc = _obsrelsethashtreefm1
+
+ for chg, obs in treefunc(repo):
+ ui.status('%s %s\n' % (node.hex(chg), node.hex(obs)))
+
+def _obsrelsethashtreefm0(repo):
+ return _obsrelsethashtree(repo, obsolete._fm0encodeonemarker)
+
+def _obsrelsethashtreefm1(repo):
+ return _obsrelsethashtree(repo, obsolete._fm1encodeonemarker)
+
+def _obsrelsethashtree(repo, encodeonemarker):
+ cache = []
+ unfi = repo.unfiltered()
+ markercache = {}
+ compat.progress(repo.ui, _("preparing locally"), 0, total=len(unfi),
+ unit=_("changesets"))
+ for i in unfi:
+ ctx = unfi[i]
+ entry = 0
+ sha = hashlib.sha1()
+ # add data from p1
+ for p in ctx.parents():
+ p = p.rev()
+ if p < 0:
+ p = node.nullid
+ else:
+ p = cache[p][1]
+ if p != node.nullid:
+ entry += 1
+ sha.update(p)
+ tmarkers = repo.obsstore.relevantmarkers([ctx.node()])
+ if tmarkers:
+ bmarkers = []
+ for m in tmarkers:
+ if m not in markercache:
+ markercache[m] = encodeonemarker(m)
+ bmarkers.append(markercache[m])
+ bmarkers.sort()
+ for m in bmarkers:
+ entry += 1
+ sha.update(m)
+ if entry:
+ cache.append((ctx.node(), sha.digest()))
+ else:
+ cache.append((ctx.node(), node.nullid))
+ compat.progress(repo.ui, _("preparing locally"), i, total=len(unfi),
+ unit=_("changesets"))
+ compat.progress(repo.ui, _("preparing locally"), None)
+ return cache
--- a/hgext3rd/evolve/rewind.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/evolve/rewind.py Tue Jun 04 11:08:44 2019 +0200
@@ -136,7 +136,7 @@
rewinded.update(scmutil.revrange(repo, revsto))
if revsfrom:
succs = scmutil.revrange(repo, revsfrom)
- rewinded.update(unfi.revs('precursors(%ld)', succs))
+ rewinded.update(unfi.revs('predecessors(%ld)', succs))
if not rewinded:
raise error.Abort('no revision to rewind to')
--- a/hgext3rd/evolve/templatekw.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/evolve/templatekw.py Tue Jun 04 11:08:44 2019 +0200
@@ -24,17 +24,32 @@
### template keywords
if util.safehasattr(templatekw, 'compatlist'):
+ @eh.templatekeyword('instabilities', requires=set(['ctx', 'templ']))
+ def showinstabilities(context, mapping):
+ """List of strings. Evolution instabilities affecting the changeset
+ (zero or more of "orphan", "content-divergent" or "phase-divergent")."""
+ ctx = context.resource(mapping, 'ctx')
+ return templatekw.compatlist(context, mapping, 'instability',
+ ctx.instabilities(),
+ plural='instabilities')
+
@eh.templatekeyword('troubles', requires=set(['ctx', 'templ']))
- def showtroubles(context, mapping):
+ def showtroubles(context, mapping): # legacy name for instabilities
ctx = context.resource(mapping, 'ctx')
return templatekw.compatlist(context, mapping, 'trouble',
ctx.instabilities(), plural='troubles')
else:
# older template API in hg < 4.6
+ @eh.templatekeyword('instabilities')
+ def showinstabilities(**args):
+ """List of strings. Evolution instabilities affecting the changeset
+ (zero or more of "orphan", "content-divergent" or "phase-divergent")."""
+ ctx = args['ctx']
+ return templatekw.showlist('instability', ctx.instabilities(), args,
+ plural='instabilities')
+
@eh.templatekeyword('troubles')
def showtroubles(**args):
- """List of strings. Evolution troubles affecting the changeset
- (zero or more of "unstable", "divergent" or "bumped")."""
ctx = args['ctx']
return templatekw.showlist('trouble', ctx.instabilities(), args,
plural='troubles')
--- a/hgext3rd/evolve/utility.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/evolve/utility.py Tue Jun 04 11:08:44 2019 +0200
@@ -187,3 +187,26 @@
return None
return revs[intidx - 1]
+
+def mergeusers(ui, base, divergent, other):
+ """ merges the users from two divergent changesets using three-way merge
+ and return the user that will be used as the author of resolved cset"""
+ baseuser = base.user()
+ divuser = divergent.user()
+ othuser = other.user()
+
+ if divuser == othuser:
+ return divuser
+ else:
+ if baseuser == divuser:
+ return othuser
+ elif baseuser == othuser:
+ return divuser
+ else:
+ # all three are different, lets concatenate the two authors
+ # XXX: should we let the user know about concatenation of authors
+ # by printing some message (or maybe in verbose mode)
+ users = set(divuser.split(', '))
+ users.update(othuser.split(', '))
+ user = ', '.join(sorted(users))
+ return user
--- a/hgext3rd/topic/__init__.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/topic/__init__.py Tue Jun 04 11:08:44 2019 +0200
@@ -104,6 +104,12 @@
In addition, the topic extension adds a ``--publish`` flag on :hg:`push`. When
used, the pushed revisions are published if the push succeeds. It also applies
to common revisions selected by the push.
+
+One can prevent any publishing to happens in a repository using::
+
+ [experimental]
+ topic.allow-publish = no
+
"""
from __future__ import absolute_import
@@ -154,36 +160,36 @@
cmdtable = {}
command = registrar.command(cmdtable)
colortable = {'topic.active': 'green',
- 'topic.list.troubledcount': 'red',
+ 'topic.list.unstablecount': 'red',
'topic.list.headcount.multiple': 'yellow',
'topic.list.behindcount': 'cyan',
'topic.list.behinderror': 'red',
- 'topic.stack.index': 'yellow',
- 'topic.stack.index.base': 'none dim',
- 'topic.stack.desc.base': 'none dim',
- 'topic.stack.shortnode.base': 'none dim',
- 'topic.stack.state.base': 'dim',
- 'topic.stack.state.clean': 'green',
- 'topic.stack.index.current': 'cyan', # random pick
- 'topic.stack.state.current': 'cyan bold', # random pick
- 'topic.stack.desc.current': 'cyan', # random pick
- 'topic.stack.shortnode.current': 'cyan', # random pick
- 'topic.stack.state.orphan': 'red',
- 'topic.stack.state.content-divergent': 'red',
- 'topic.stack.state.phase-divergent': 'red',
- 'topic.stack.summary.behindcount': 'cyan',
- 'topic.stack.summary.behinderror': 'red',
- 'topic.stack.summary.headcount.multiple': 'yellow',
+ 'stack.index': 'yellow',
+ 'stack.index.base': 'none dim',
+ 'stack.desc.base': 'none dim',
+ 'stack.shortnode.base': 'none dim',
+ 'stack.state.base': 'dim',
+ 'stack.state.clean': 'green',
+ 'stack.index.current': 'cyan', # random pick
+ 'stack.state.current': 'cyan bold', # random pick
+ 'stack.desc.current': 'cyan', # random pick
+ 'stack.shortnode.current': 'cyan', # random pick
+ 'stack.state.orphan': 'red',
+ 'stack.state.content-divergent': 'red',
+ 'stack.state.phase-divergent': 'red',
+ 'stack.summary.behindcount': 'cyan',
+ 'stack.summary.behinderror': 'red',
+ 'stack.summary.headcount.multiple': 'yellow',
# default color to help log output and thg
# (first pick I could think off, update as needed
'log.topic': 'green_background',
'topic.active': 'green',
}
-__version__ = '0.14.1'
+__version__ = '0.15.0.dev'
-testedwith = '4.4.2 4.5.2 4.6.2 4.7 4.8 4.9 5.0'
-minimumhgversion = '4.4'
+testedwith = '4.5.2 4.6.2 4.7 4.8 4.9 5.0'
+minimumhgversion = '4.5'
buglink = 'https://bz.mercurial-scm.org/'
if util.safehasattr(registrar, 'configitem'):
@@ -205,6 +211,9 @@
configitem('experimental', 'topic.publish-bare-branch',
default=False,
)
+ configitem('experimental', 'topic.allow-publish',
+ default=configitems.dynamicdefault,
+ )
configitem('_internal', 'keep-topic',
default=False,
)
@@ -256,7 +265,6 @@
stackrev = re.compile(r'^s\d+$')
topicrev = re.compile(r'^t\d+$')
-branchrev = re.compile(r'^b\d+$')
hastopicext = common.hastopicext
@@ -279,11 +287,6 @@
if not tname:
raise error.Abort(_('cannot resolve "%s": no active topic') % name)
revs = list(stack.stack(repo, topic=topic))
- elif branchrev.match(name):
- ttype = 'branch'
- idx = int(name[1:])
- tname = branch = repo[None].branch()
- revs = list(stack.stack(repo, branch=branch))
if revs is not None:
try:
@@ -294,7 +297,7 @@
elif ttype == 'branch':
msg = _('cannot resolve "%s": %s "%s" has only %d non-public changesets')
raise error.Abort(msg % (name, ttype, tname, len(revs) - 1))
- # b0 or t0 or s0 can be None
+ # t0 or s0 can be None
if r == -1 and idx == 0:
msg = _('the %s "%s" has no %s')
raise error.Abort(msg % (ttype, tname, name))
@@ -502,6 +505,23 @@
flow.publishbarebranch(repo, tr2)
origclose()
tr.close = close
+ allow_publish = self.ui.configbool('experimental',
+ 'topic.allow-publish',
+ True)
+ if not allow_publish:
+ if util.safehasattr(tr, 'validator'): # hg <= 4.7
+ origvalidator = tr.validator
+ else:
+ origvalidator = tr._validator
+
+ def validator(tr2):
+ repo = reporef()
+ flow.reject_publish(repo, tr2)
+ return origvalidator(tr2)
+ if util.safehasattr(tr, 'validator'): # hg <= 4.7
+ tr.validator = validator
+ else:
+ tr._validator = validator
# real transaction start
ct = self.currenttopic
@@ -575,7 +595,8 @@
self._extra[constants.extrakey] = ''
def wrapadd(orig, cl, manifest, files, desc, transaction, p1, p2, user,
- date=None, extra=None, p1copies=None, p2copies=None):
+ date=None, extra=None, p1copies=None, p2copies=None,
+ filesadded=None, filesremoved=None):
if constants.extrakey in extra and not extra[constants.extrakey]:
extra = extra.copy()
del extra[constants.extrakey]
@@ -585,6 +606,11 @@
kwargs['p1copies'] = p1copies
if p2copies is not None:
kwargs['p2copies'] = p2copies
+ # hg <= 5.0 (f385ba70e4af)
+ if filesadded is not None:
+ kwargs['filesadded'] = filesadded
+ if filesremoved is not None:
+ kwargs['filesremoved'] = filesremoved
return orig(cl, manifest, files, desc, transaction, p1, p2, user,
date=date, extra=extra, **kwargs)
@@ -709,8 +735,8 @@
ct = repo.currenttopic
if clear:
if ct:
- empty = stack.stack(repo, topic=ct).changesetcount == 0
- if empty:
+ st = stack.stack(repo, topic=ct)
+ if not st:
ui.status(_('clearing empty topic "%s"\n') % ct)
return _changecurrenttopic(repo, None)
@@ -1024,11 +1050,11 @@
fm.write('changesetcount', '%d changesets', data.changesetcount,
label='topic.list.changesetcount')
- if data.troubledcount:
+ if data.unstablecount:
fm.plain(', ')
- fm.write('troubledcount', '%d troubled',
- data.troubledcount,
- label='topic.list.troubledcount')
+ fm.write('unstablecount', '%d unstable',
+ data.unstablecount,
+ label='topic.list.unstablecount')
headcount = len(data.heads)
if 1 < headcount:
@@ -1208,8 +1234,8 @@
if t and t != ot:
repo.ui.status(_("switching to topic %s\n") % t)
if ot and not t:
- empty = stack.stack(repo, topic=ot).changesetcount == 0
- if empty:
+ st = stack.stack(repo, topic=ot)
+ if not st:
repo.ui.status(_('clearing empty topic "%s"\n') % ot)
elif ist0:
repo.ui.status(_("preserving the current topic '%s'\n") % ot)
--- a/hgext3rd/topic/flow.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/topic/flow.py Tue Jun 04 11:08:44 2019 +0200
@@ -55,6 +55,19 @@
else:
repo.ui.warn(_("unknown 'topic-mode.server': %s\n" % mode))
+def reject_publish(repo, tr):
+ """prevent a transaction to be publish anything"""
+ published = set()
+ for r, (o, n) in tr.changes['phases'].items():
+ if n == phases.public:
+ published.add(r)
+ if published:
+ r = min(published)
+ msg = "rejecting publishing of changeset %s" % repo[r]
+ if len(published) > 1:
+ msg += ' and %d others' % (len(published) - 1)
+ raise error.Abort(msg)
+
def wrappush(orig, repo, remote, *args, **kwargs):
"""interpret the --publish flag and pass it to the push operation"""
newargs = kwargs.copy()
--- a/hgext3rd/topic/stack.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/topic/stack.py Tue Jun 04 11:08:44 2019 +0200
@@ -77,6 +77,11 @@
def __getitem__(self, index):
return self.revs[index]
+ def __nonzero__(self):
+ return bool(self._revs)
+
+ __bool__ = __nonzero__
+
def index(self, item):
return self.revs.index(item)
@@ -175,7 +180,7 @@
return len(self._revs)
@util.propertycache
- def troubledcount(self):
+ def unstablecount(self):
return len([r for r in self._revs if self._repo[r].isunstable()])
@util.propertycache
@@ -210,11 +215,9 @@
branches = set([self._repo[None].branch()])
return branches
-def labelsgen(prefix, labelssuffix):
- """ Takes a label prefix and a list of suffixes. Returns a string of the prefix
- formatted with each suffix separated with a space.
- """
- return ' '.join(prefix % suffix.replace(' ', '-') for suffix in labelssuffix)
+def labelsgen(prefix, parts):
+ fmt = prefix + '.%s'
+ return prefix + ' ' + ' '.join(fmt % p.replace(' ', '-') for p in parts)
def showstack(ui, repo, branch=None, topic=None, opts=None):
if opts is None:
@@ -242,41 +245,38 @@
if topic == repo.currenttopic:
label = 'topic.active'
- data = stackdata(repo, branch=branch, topic=topic)
- empty = False
- if data['changesetcount'] == 0:
- empty = True
+ st = stack(repo, branch, topic)
if topic is not None:
fm.plain(_('### topic: %s')
% ui.label(topic, label),
- label='topic.stack.summary.topic')
+ label='stack.summary.topic')
- if 1 < data['headcount']:
+ if 1 < len(st.heads):
fm.plain(' (')
- fm.plain('%d heads' % data['headcount'],
- label='topic.stack.summary.headcount.multiple')
+ fm.plain('%d heads' % len(st.heads),
+ label='stack.summary.headcount.multiple')
fm.plain(')')
fm.plain('\n')
fm.plain(_('### target: %s (branch)')
- % '+'.join(data['branches']), # XXX handle multi branches
- label='topic.stack.summary.branches')
+ % '+'.join(st.branches), # XXX handle multi branches
+ label='stack.summary.branches')
if topic is None:
- if 1 < data['headcount']:
+ if 1 < len(st.heads):
fm.plain(' (')
- fm.plain('%d heads' % data['headcount'],
- label='topic.stack.summary.headcount.multiple')
+ fm.plain('%d heads' % len(st.heads),
+ label='stack.summary.headcount.multiple')
fm.plain(')')
else:
- if data['behindcount'] == -1:
+ if st.behindcount == -1:
fm.plain(', ')
- fm.plain('ambiguous rebase destination - %s' % data['behinderror'],
- label='topic.stack.summary.behinderror')
- elif data['behindcount']:
+ fm.plain('ambiguous rebase destination - %s' % st.behinderror,
+ label='stack.summary.behinderror')
+ elif st.behindcount:
fm.plain(', ')
- fm.plain('%d behind' % data['behindcount'], label='topic.stack.summary.behindcount')
+ fm.plain('%d behind' % st.behindcount, label='stack.summary.behindcount')
fm.plain('\n')
- if empty:
+ if not st:
fm.plain(_("(stack is empty)\n"))
st = stack(repo, branch=branch, topic=topic)
@@ -318,7 +318,7 @@
states = []
if opts.get('children'):
expr = 'children(%d) and merge() - %ld'
- revisions = repo.revs(expr, ctx.rev(), st.revs[1:])
+ revisions = repo.revs(expr, ctx.rev(), st._revs)
if len(revisions) > 0:
states.append('external-children')
@@ -354,43 +354,35 @@
states.sort()
fm.startitem()
+ fm.context(ctx=ctx)
fm.data(isentry=isentry)
if idx is None:
- fm.plain(' ')
- if ui.verbose:
- fm.plain(' ')
- else:
- fm.write('topic.stack.index', '%s%%d' % prefix, idx,
- label='topic.stack.index ' + labelsgen('topic.stack.index.%s', states))
+ spacewidth = 0
if ui.verbose:
- fm.write('topic.stack.shortnode', '(%s)', short(ctx.node()),
- label='topic.stack.shortnode ' + labelsgen('topic.stack.shortnode.%s', states))
- fm.write('topic.stack.state.symbol', '%s', symbol,
- label='topic.stack.state ' + labelsgen('topic.stack.state.%s', states))
+ # parentheses plus short node hash
+ spacewidth = 2 + 12
+ if ui.debugflag:
+ # parentheses plus full node hash
+ spacewidth = 2 + 40
+ # s# alias width
+ spacewidth += 2
+ fm.plain(' ' * spacewidth)
+ else:
+ fm.write('stack_index', '%s%%d' % prefix, idx,
+ label=labelsgen('stack.index', states))
+ if ui.verbose:
+ fm.write('node', '(%s)', fm.hexfunc(ctx.node()),
+ label=labelsgen('stack.shortnode', states))
+ else:
+ fm.data(node=fm.hexfunc(ctx.node()))
+ fm.write('symbol', '%s', symbol,
+ label=labelsgen('stack.state', states))
fm.plain(' ')
- fm.write('topic.stack.desc', '%s', ctx.description().splitlines()[0],
- label='topic.stack.desc ' + labelsgen('topic.stack.desc.%s', states))
- fm.condwrite(states != ['clean'] and idx is not None, 'topic.stack.state',
- ' (%s)', fm.formatlist(states, 'topic.stack.state'),
- label='topic.stack.state ' + labelsgen('topic.stack.state.%s', states))
+ fm.write('desc', '%s', ctx.description().splitlines()[0],
+ label=labelsgen('stack.desc', states))
+ fm.condwrite(states != ['clean'] and idx is not None, 'state',
+ ' (%s)', fm.formatlist(states, 'stack.state'),
+ label=labelsgen('stack.state', states))
fm.plain('\n')
fm.end()
-
-def stackdata(repo, branch=None, topic=None):
- """get various data about a stack
-
- :changesetcount: number of non-obsolete changesets in the stack
- :troubledcount: number on troubled changesets
- :headcount: number of heads on the topic
- :behindcount: number of changeset on rebase destination
- """
- data = {}
- current = stack(repo, branch, topic)
- data['changesetcount'] = current.changesetcount
- data['troubledcount'] = current.troubledcount
- data['headcount'] = len(current.heads)
- data['behindcount'] = current.behindcount
- data['behinderror'] = current.behinderror
- data['branches'] = current.branches
- return data
--- a/hgext3rd/topic/topicmap.py Sat Jun 01 02:30:14 2019 +0200
+++ b/hgext3rd/topic/topicmap.py Tue Jun 04 11:08:44 2019 +0200
@@ -108,7 +108,6 @@
# logic copy-pasted from cmdutil.commitstatus()
if opts is None:
opts = {}
- ctx = repo[node]
if ctx.topic():
return ret
parents = ctx.parents()
--- a/tests/test-discovery-obshashrange.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-discovery-obshashrange.t Tue Jun 04 11:08:44 2019 +0200
@@ -191,7 +191,7 @@
sending hello command
sending between command
remote: * (glob)
- remote: capabilities: _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v1 batch * (glob)
+ remote: capabilities: _evoext_getbundle_obscommon _evoext_obshashrange_v1 batch * (glob)
remote: 1
sending protocaps command
query 1; heads
@@ -320,7 +320,7 @@
* @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> sending hello command (glob)
* @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> sending between command (glob)
* @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> remote: * (glob)
- * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> remote: capabilities: _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v1 batch branchmap bundle2=HG20%0Abookmarks%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Aobsmarkers%3DV0%2CV1%0Aphases%3Dheads%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps%0Arev-branch-cache%0Astream%3Dv2 changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob)
+ * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> remote: capabilities: _evoext_getbundle_obscommon _evoext_obshashrange_v1 batch branchmap bundle2=HG20%0Abookmarks%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Aobsmarkers%3DV0%2CV1%0Aphases%3Dheads%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps%0Arev-branch-cache%0Astream%3Dv2 changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob)
* @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> remote: 1 (glob)
* @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> sending protocaps command (glob)
* @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> query 1; heads (glob)
@@ -1176,8 +1176,6 @@
$ hg debugcapabilities ssh://user@dummy/with-evolve | grep _evoext
_evoext_getbundle_obscommon
- _evoext_obshash_0
- _evoext_obshash_1
_evoext_obshashrange_v1
$ hg debugcapabilities ssh://user@dummy/without-evolve | grep _evoext
[1]
@@ -1196,8 +1194,6 @@
$ hg debugcapabilities http://localhost:$HGPORT/with-evolve| grep _evoext
_evoext_getbundle_obscommon
- _evoext_obshash_0
- _evoext_obshash_1
_evoext_obshashrange_v1
$ hg debugcapabilities http://localhost:$HGPORT/without-evolve| grep _evoext
[1]
@@ -1214,8 +1210,6 @@
[1]
$ hg debugcapabilities http://localhost:$HGPORT/with-evolve| grep _evoext
_evoext_getbundle_obscommon
- _evoext_obshash_0
- _evoext_obshash_1
_evoext_obshashrange_v1
$ killdaemons.py
--- a/tests/test-evolve-abort-orphan.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-abort-orphan.t Tue Jun 04 11:08:44 2019 +0200
@@ -127,7 +127,7 @@
cleaning up things for next testing
- $ hg evolve --all
+ $ hg evolve --all --update
move:[4] added d
atop:[5] added c
merging d
@@ -526,7 +526,7 @@
$ hg next --evolve
move:[2] added b
atop:[4] added a
- working directory now at c1f4718020e3
+ working directory is now at c1f4718020e3
$ hg next --evolve
move:[3] added c
atop:[5] added b
--- a/tests/test-evolve-content-divergent-basic.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-content-divergent-basic.t Tue Jun 04 11:08:44 2019 +0200
@@ -20,7 +20,7 @@
> git = 1
> unified = 0
> [ui]
- > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline} [{troubles}]\n
+ > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline} [{instabilities}]\n
> [extensions]
> EOF
$ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
@@ -139,8 +139,6 @@
merge:[2] divergent
with: [3] divergent
base: [1] added b
- updating to "local" side of the conflict: 593c57f2117e
- merging "other" content-divergent changeset '8374d2ddc3a4'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at 45bf1312f454
$ hg log -G
@@ -231,13 +229,12 @@
o 0:8fa14d15e168 added hgignore
() [default] draft
- $ hg evolve --content-divergent --config ui.interactive=True<<EOF
+ $ hg evolve --content-divergent --no-all --config ui.interactive=True << EOF
> c
> EOF
merge:[6] added d
with: [5] added d
base: [4] added d
- merging "other" content-divergent changeset '9e5dffcb3d48'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
content divergent changesets on different branches.
choose branch for the resolution changeset. (a) default or (b) watwat or (c) foobar? c
@@ -288,11 +285,10 @@
o 0:8fa14d15e168 added hgignore
() [default] draft
- $ hg evolve --content-divergent
+ $ hg evolve --content-divergent --no-all
merge:[9] added a d with bar in it, expect some beers
with: [8] added d
base: [7] added d
- merging "other" content-divergent changeset 'f621d00f5f0e'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at a9d6fd6b5e40
@@ -337,11 +333,10 @@
o 0:8fa14d15e168 added hgignore
() [default] draft
- $ hg evolve --content-divergent
+ $ hg evolve --content-divergent --no-all
merge:[12] foo to d
with: [11] foo to d
base: [10] added a d with bar in it, expect some beers
- merging "other" content-divergent changeset 'b10b07a394f1'
merging d
warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
@@ -397,11 +392,10 @@
o 0:8fa14d15e168 added hgignore
() [default] draft
- $ hg evolve --content-divergent
+ $ hg evolve --content-divergent --no-all
merge:[15] wat to d, wat?
with: [14] bar to d, expect beers
base: [13] foo to d
- merging "other" content-divergent changeset '27f0463f169a'
merging d
warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
@@ -505,14 +499,14 @@
Stabilize it
- $ hg evolve -qn --confirm --content-divergent
+ $ hg evolve -qn --confirm --content-divergent --no-all
merge:[3] More addition
with: [2] More addition
base: [1] More addition
perform evolve? [Ny] n
abort: evolve aborted by user
[255]
- $ echo y | hg evolve -qn --confirm --config ui.interactive=True --content-divergent
+ $ echo y | hg evolve -qn --confirm --config ui.interactive=True --content-divergent --no-all
merge:[3] More addition
with: [2] More addition
base: [1] More addition
@@ -523,7 +517,7 @@
hg up -C 867e43582046 &&
hg revert --all --rev tip &&
hg commit -m "`hg log -r 051337a45e7c --template={desc}`";
- $ hg evolve -v --content-divergent
+ $ hg evolve -v --content-divergent --no-all
merge:[3] More addition
with: [2] More addition
base: [1] More addition
@@ -601,18 +595,17 @@
o 0:6569b5a81c7e@default(public) bk:[] root
- $ hg evolve -qn --content-divergent
+ $ hg evolve -qn --content-divergent --no-all
hg update -c 13c1b75640a1 &&
hg merge 5bf84d1d71d1 &&
hg commit -m "auto merge resolving conflict between 13c1b75640a1 and 5bf84d1d71d1"&&
hg up -C 867e43582046 &&
hg revert --all --rev tip &&
hg commit -m "`hg log -r 13c1b75640a1 --template={desc}`";
- $ hg evolve --content-divergent
+ $ hg evolve --content-divergent --no-all
merge:[6] More addition (2)
with: [4] More addition
base: [1] More addition
- merging "other" content-divergent changeset '5bf84d1d71d1'
merging a
warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
@@ -960,8 +953,6 @@
merge:[2] E2
with: [3] E3
base: [1] E1
- updating to "local" side of the conflict: 084ae625fa51
- merging "other" content-divergent changeset '19ed1bf64a2c'
merging numbers
merging romans
1 files updated, 2 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-evolve-content-divergent-corner-cases.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-content-divergent-corner-cases.t Tue Jun 04 11:08:44 2019 +0200
@@ -20,7 +20,7 @@
> git = 1
> unified = 0
> [ui]
- > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline} [{troubles}]\n
+ > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline} [{instabilities}]\n
> [extensions]
> EOF
$ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
@@ -72,12 +72,10 @@
o 0:9092f1db7931@default(draft) added a []
- $ hg evolve --all --any --content-divergent
+ $ hg evolve --all --any --content-divergent --update
merge:[2] divergent
with: [3] divergent
base: [1] added b
- updating to "local" side of the conflict: 593c57f2117e
- merging "other" content-divergent changeset '8374d2ddc3a4'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at 45bf1312f454
$ hg log -G
@@ -137,8 +135,6 @@
merge:[6] add cdivergent1
with: [7] add _c
base: [5] add _c
- updating to "local" side of the conflict: e3ff64ce8d4c
- merging "other" content-divergent changeset 'b2ae71172042'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
nothing changed
working directory is now at e3ff64ce8d4c
@@ -199,15 +195,14 @@
> [extensions]
> testextension=$TESTTMP/test_extension.py
> EOF
- $ hg evolve --all
+ $ hg evolve
nothing to evolve on current working copy parent
(do you want to use --content-divergent)
[2]
$ hg evolve --content-divergent
- merge:[3] bdivergent
- with: [2] bdivergent
+ merge:[2] bdivergent
+ with: [3] bdivergent
base: [1] add _b
- merging "other" content-divergent changeset '05a6b6a9e633'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at 73ff357d3975
@@ -275,7 +270,7 @@
o 0:9092f1db7931 added a
() [default] draft
- $ hg evolve --content-divergent --any
+ $ hg evolve --content-divergent --any --update
merge:[5] updated e
with: [6] updated e
base: [4] added e
@@ -308,8 +303,6 @@
$ hg evolve --continue
evolving 6:de4ea3103326 "updated e"
- updating to "local" side of the conflict: ff6f7cd76a7c
- merging "other" content-divergent changeset 'e504bd82de7e'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at 83b1664a580f
@@ -363,11 +356,10 @@
Resolve the divergence, only "a" should be removed
- $ hg evolve --content-divergent
- merge:[3] delete a
- with: [2] delete a
+ $ hg evolve --content-divergent --update
+ merge:[2] delete a
+ with: [3] delete a
base: [1] delete a
- merging "other" content-divergent changeset '0825dcee2670'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at 7ca6a9fafcf6
$ hg glog
--- a/tests/test-evolve-content-divergent-interrupted.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-content-divergent-interrupted.t Tue Jun 04 11:08:44 2019 +0200
@@ -79,11 +79,10 @@
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve --content-divergent
+ $ hg evolve --content-divergent --no-all
merge:[6] added d
with: [5] added d
base: [4] added d
- merging "other" content-divergent changeset 'e49523854bc8'
merging d
warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
@@ -191,14 +190,10 @@
merge:[8] added c
with: [10] added c
base: [3] added c
- updating to "local" side of the conflict: 2ba73e31f264
- merging "other" content-divergent changeset '491e10505bae'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
merge:[5] added d
with: [7] added d
base: [4] added d
- updating to "local" side of the conflict: e49523854bc8
- merging "other" content-divergent changeset 'f0f1694f123e'
merging d
warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
@@ -358,8 +353,6 @@
with: [8] added d
base: [4] added d
rebasing "other" content-divergent changeset 33e4442acf98 on ca1b80f7960a
- updating to "local" side of the conflict: e49523854bc8
- merging "other" content-divergent changeset 'a663d1567f0b'
merging d
warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
@@ -447,11 +440,10 @@
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve --content-divergent
+ $ hg evolve --content-divergent --no-all
merge:[6] added d
with: [5] added d
base: [4] added d
- merging "other" content-divergent changeset 'e49523854bc8'
merging d
warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
@@ -504,8 +496,6 @@
with: [7] added d
base: [4] added d
rebasing "other" content-divergent changeset 517d4375cb72 on ca1b80f7960a
- updating to "local" side of the conflict: e49523854bc8
- merging "other" content-divergent changeset '606ad96040fc'
merging d
warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
--- a/tests/test-evolve-content-divergent-meta.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-content-divergent-meta.t Tue Jun 04 11:08:44 2019 +0200
@@ -9,7 +9,7 @@
$ cat >> $HGRCPATH <<EOF
> [alias]
- > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n"
+ > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {instabilities}\n\n"
> [phases]
> publish = False
> [extensions]
@@ -86,10 +86,7 @@
merge:[3] added c e
with: [4] added c
base: [2] added c
- updating to "local" side of the conflict: 0c9267e23c9d
- merging "other" content-divergent changeset '6c06cda6dc99'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory is now at 443bd2972210
Make sure resultant cset don't replace the initial user with user running the command:
$ hg log -r tip
@@ -100,3 +97,63 @@
date: Thu Jan 01 00:00:00 1970 +0000
summary: added c e
+ $ cd ..
+
+Testing the three way merge logic for user of content divergent changesets
+--------------------------------------------------------------------------
+
+ $ hg init mergeusers
+ $ cd mergeusers
+ $ for ch in a b c; do
+ > touch $ch
+ > hg add $ch
+ > hg ci -m "added "$ch
+ > done;
+
+ $ hg amend -m "updated c"
+ $ hg up -r 'desc("added c")' --hidden -q
+ updated to hidden changeset 2b3c31fe982d
+ (hidden revision '2b3c31fe982d' was rewritten as: 464e35020fd0)
+ working directory parent is obsolete! (2b3c31fe982d)
+ $ echo coco > c
+
+1) when one user is different wrt base
+--------------------------------------
+
+Insert a diverging author name:
+ $ hg amend -u 'foouser'
+ 2 new content-divergent changesets
+
+Run automatic evolution:
+ $ hg evolve --content-divergent
+ merge:[3] updated c
+ with: [4] added c
+ base: [2] added c
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ working directory is now at 932d6ceb7672
+
+ $ hg log -r tip | grep "^user"
+ user: foouser
+
+ $ hg strip . -q --config extensions.strip=
+ 2 new content-divergent changesets
+
+2) when both the user are different wrt base
+--------------------------------------------
+
+ $ hg up -r 'max(desc("updated c"))'
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg amend -u 'baruser'
+
+Run automatic evolution:
+ $ hg evolve --content-divergent
+ merge:[4] added c
+ with: [5] updated c
+ base: [2] added c
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ working directory is now at 202a770d8c1f
+
+ $ hg log -r tip | grep "^user"
+ user: baruser, foouser
+
+ $ cd ..
--- a/tests/test-evolve-content-divergent-relocation.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-content-divergent-relocation.t Tue Jun 04 11:08:44 2019 +0200
@@ -69,8 +69,6 @@
with: [6] added b
base: [2] added b
rebasing "other" content-divergent changeset da4b96f4a8d6 on c7586e2a9264
- updating to "local" side of the conflict: 7ed0642d644b
- merging "other" content-divergent changeset '11f849d7159f'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at 171614c9a791
@@ -109,13 +107,12 @@
move:[3] added c
atop:[8] added b
move:[4] added d
- working directory is now at 4ae4427ee9f8
$ hg glog
- @ 10:4ae4427ee9f8 added d
+ o 10:4ae4427ee9f8 added d
| () [default] draft
o 9:917281f93fcb added c
| () [default] draft
- o 8:171614c9a791 added b
+ @ 8:171614c9a791 added b
| () [default] draft
o 1:c7586e2a9264 added a
| () [default] draft
@@ -124,8 +121,6 @@
More testing!
- $ hg up .^^
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo x > x
$ hg ci -Aqm "added x"
$ hg glog -r .
@@ -170,8 +165,6 @@
with: [12] added foo to x
base: [11] added x
rebasing "other" content-divergent changeset 1e1a50385a7d on 4ae4427ee9f8
- updating to "local" side of the conflict: 1e4f6b3bb39b
- merging "other" content-divergent changeset '80cc9b1ec650'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at b006cf317e0e
@@ -259,8 +252,6 @@
with: [17] added y
base: [16] added y
rebasing "other" content-divergent changeset 2a9f6ccbdeba on b006cf317e0e
- updating to "local" side of the conflict: b4575ed6fcfc
- merging "other" content-divergent changeset '48f745db3f53'
merging y
warning: conflicts while merging y! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
@@ -424,8 +415,6 @@
$ hg evolve --continue
evolving 23:3f7a1f693080 "added z"
- updating to "local" side of the conflict: 53242575ffa9
- merging "other" content-divergent changeset 'cdb0643c69fc'
merging y
warning: conflicts while merging y! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
--- a/tests/test-evolve-content-divergent-stack.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-content-divergent-stack.t Tue Jun 04 11:08:44 2019 +0200
@@ -72,15 +72,14 @@
atop:[6] watbar to a
move:[3] added c
move:[4] added d
- working directory is now at 15c781f93cac
$ hg glog
- @ 9:15c781f93cac added d
+ o 9:15c781f93cac added d
| () [default] draft
o 8:9e5fb1d5b955 added c
| () [default] draft
o 7:88516dccf68a added b
| () [default] draft
- o 6:82b74d5dc678 watbar to a
+ @ 6:82b74d5dc678 watbar to a
| () [default] draft
o 0:8fa14d15e168 added hgignore
() [default] draft
@@ -96,15 +95,14 @@
atop:[5] watbar to a
move:[3] added c
move:[4] added d
- working directory is now at c72d2885eb51
$ hg glog
- @ 8:c72d2885eb51 added d
+ o 8:c72d2885eb51 added d
| () [default] draft
o 7:3ce4be6d8e5e added c
| () [default] draft
o 6:d5f148423c16 added b
| () [default] draft
- o 5:8e222f257bbf watbar to a
+ @ 5:8e222f257bbf watbar to a
| () [default] draft
o 0:8fa14d15e168 added hgignore
() [default] draft
@@ -130,13 +128,13 @@
| () [default] draft
* 9:82b74d5dc678 watbar to a
| () [default] draft
- | @ 8:c72d2885eb51 added d
+ | * 8:c72d2885eb51 added d
| | () [default] draft
| * 7:3ce4be6d8e5e added c
| | () [default] draft
| * 6:d5f148423c16 added b
| | () [default] draft
- | * 5:8e222f257bbf watbar to a
+ | @ 5:8e222f257bbf watbar to a
|/ () [default] draft
o 0:8fa14d15e168 added hgignore
() [default] draft
@@ -145,38 +143,29 @@
merge:[5] watbar to a
with: [9] watbar to a
base: [1] added a
- updating to "local" side of the conflict: 8e222f257bbf
- merging "other" content-divergent changeset '82b74d5dc678'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- 6 new orphan changesets
merge:[6] added b
with: [10] added b
base: [2] added b
- updating to "local" side of the conflict: d5f148423c16
- merging "other" content-divergent changeset '88516dccf68a'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
merge:[7] added c
with: [11] added c
base: [3] added c
- updating to "local" side of the conflict: 3ce4be6d8e5e
- merging "other" content-divergent changeset '9e5fb1d5b955'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
merge:[8] added d
with: [12] added d
base: [4] added d
- updating to "local" side of the conflict: c72d2885eb51
- merging "other" content-divergent changeset '15c781f93cac'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory is now at 038fe7db3d88
+ working directory is now at f66f262fff6c
$ hg glog
- @ 16:038fe7db3d88 added d
+ o 16:038fe7db3d88 added d
| () [default] draft
o 15:b2cac10f3836 added c
| () [default] draft
o 14:eadfd9d70680 added b
| () [default] draft
- o 13:f66f262fff6c watbar to a
+ @ 13:f66f262fff6c watbar to a
| () [default] draft
o 0:8fa14d15e168 added hgignore
() [default] draft
@@ -270,16 +259,15 @@
atop:[5] watbar to a
move:[3] added c
move:[4] added d
- working directory is now at c72d2885eb51
$ hg glog
- @ 8:c72d2885eb51 added d
+ o 8:c72d2885eb51 added d
| () [default] draft
o 7:3ce4be6d8e5e added c
| () [default] draft
o 6:d5f148423c16 added b
| () [default] draft
- o 5:8e222f257bbf watbar to a
+ @ 5:8e222f257bbf watbar to a
| () [default] draft
o 0:8fa14d15e168 added hgignore
() [default] draft
@@ -307,13 +295,13 @@
| () [default] draft
o 9:2228e3b74514 add newfile
| () [default] draft
- | @ 8:c72d2885eb51 added d
+ | * 8:c72d2885eb51 added d
| | () [default] draft
| * 7:3ce4be6d8e5e added c
| | () [default] draft
| * 6:d5f148423c16 added b
| | () [default] draft
- | * 5:8e222f257bbf watbar to a
+ | @ 5:8e222f257bbf watbar to a
|/ () [default] draft
o 0:8fa14d15e168 added hgignore
() [default] draft
@@ -323,41 +311,32 @@
with: [5] watbar to a
base: [1] added a
rebasing "other" content-divergent changeset 8e222f257bbf on 2228e3b74514
- updating to "local" side of the conflict: c04ff147ef79
- merging "other" content-divergent changeset '186bdc2cdfa2'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- 6 new orphan changesets
merge:[11] added b
with: [6] added b
base: [2] added b
rebasing "other" content-divergent changeset d5f148423c16 on c04ff147ef79
- updating to "local" side of the conflict: 6eb54b5af3fb
- merging "other" content-divergent changeset '8542f15656e7'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
merge:[12] added c
with: [7] added c
base: [3] added c
rebasing "other" content-divergent changeset 3ce4be6d8e5e on 6eb54b5af3fb
- updating to "local" side of the conflict: 8ed612937375
- merging "other" content-divergent changeset 'a690ce53104a'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
merge:[13] added d
with: [8] added d
base: [4] added d
rebasing "other" content-divergent changeset c72d2885eb51 on 8ed612937375
- updating to "local" side of the conflict: d45f050514c2
- merging "other" content-divergent changeset '1d1772990a3b'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory is now at 5f7a38bdb75c
+ working directory is now at 74fbf3e6a0b6
$ hg glog
- @ 21:5f7a38bdb75c added d
+ o 21:5f7a38bdb75c added d
| () [default] draft
o 19:9865d598f0e0 added c
| () [default] draft
o 17:ac70b8c8eb63 added b
| () [default] draft
- o 15:74fbf3e6a0b6 watbar to a
+ @ 15:74fbf3e6a0b6 watbar to a
| () [default] draft
o 9:2228e3b74514 add newfile
| () [default] draft
--- a/tests/test-evolve-continue.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-continue.t Tue Jun 04 11:08:44 2019 +0200
@@ -31,7 +31,7 @@
o 0:8fa14d15e168 added hgignore
() draft
-Simple case of evolve --continue (with --[no-]update flag)
+Simple case of evolve --continue
$ hg up ca1b80f7960a
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -53,7 +53,7 @@
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve --all --no-update
+ $ hg evolve --all
move:[4] added d
atop:[5] added c
merging d
@@ -113,7 +113,7 @@
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve
+ $ hg evolve --update
move:[7] added e
atop:[8] added d
merging e
@@ -153,7 +153,7 @@
$ hg amend
3 new orphan changesets
- $ hg evolve --all
+ $ hg evolve --all --update
move:[2] added b
atop:[9] added a
merging b
@@ -236,7 +236,7 @@
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve --all
+ $ hg evolve --all --update
move:[12] added d
atop:[16] added c
move:[13] added f
@@ -294,7 +294,7 @@
$ hg amend
2 new orphan changesets
- $ hg evolve --all --confirm<<EOF
+ $ hg evolve --all --update --confirm << EOF
> y
> EOF
move:[19] added g
@@ -310,7 +310,7 @@
(no more unresolved files)
continue: hg evolve --continue
- $ hg evolve --continue<<EOF
+ $ hg evolve --continue << EOF
> y
> EOF
evolving 19:981e615b14ca "added g"
--- a/tests/test-evolve-cycles.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-cycles.t Tue Jun 04 11:08:44 2019 +0200
@@ -55,7 +55,7 @@
1 changesets pruned
$ hg prune -s "desc(A)" "desc(C)"
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- working directory now at 2a34000d3544
+ working directory is now at 2a34000d3544
1 changesets pruned
$ hg log --hidden -G
x changeset: 3:a8df460dbbfe
@@ -200,7 +200,7 @@
1 changesets pruned
$ hg prune -s "desc(D)" "desc(F)"
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- working directory now at 868d2e0eb19c
+ working directory is now at 868d2e0eb19c
1 changesets pruned
$ hg log --hidden -G
x changeset: 6:d9f908fde1a1
--- a/tests/test-evolve-issue5832.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-issue5832.t Tue Jun 04 11:08:44 2019 +0200
@@ -125,14 +125,13 @@
enter the index of the revision you want to select: 1
move:[9] merge commit
atop:[6] added c
- working directory is now at 28a0775ac832
$ hg glog
- @ 10:28a0775ac832 merge commit
+ o 10:28a0775ac832 merge commit
|\ () draft
| o 8:2baf8bae7ea4 added b
| | () draft
- | | o 7:5841d7cf9893 added d
+ | | @ 7:5841d7cf9893 added d
| | | () draft
o---+ 6:62fb70414f99 added c
/ / () draft
@@ -266,14 +265,13 @@
enter the index of the revision you want to select: 2
move:[10] merge commit
atop:[8] added d
- working directory is now at 460e6e72b7f9
$ hg glog
- @ 11:460e6e72b7f9 merge commit
+ o 11:460e6e72b7f9 merge commit
|\ () draft
| o 9:da76bb7cd904 added b
| | () draft
- o | 8:5841d7cf9893 added d
+ @ | 8:5841d7cf9893 added d
| | () draft
+---o 7:62fb70414f99 added c
| | () draft
@@ -284,6 +282,8 @@
o 0:bde1d2b6b5e5 added base
() draft
+ $ cd ..
+
Test for issue5946 present at https://bz.mercurial-scm.org/show_bug.cgi?id=5946
===============================================================================
issue with computing dependency with split and merge
@@ -412,14 +412,13 @@
atop:[8] added d
move:[10] merge commit
atop:[9] added b
- working directory is now at 578c938ebd2e
$ hg glog
- @ 11:578c938ebd2e merge commit
+ o 11:578c938ebd2e merge commit
|\ () draft
| o 9:da76bb7cd904 added b
| | () draft
- o | 8:5841d7cf9893 added d
+ @ | 8:5841d7cf9893 added d
| | () draft
+---o 7:62fb70414f99 added c
| | () draft
--- a/tests/test-evolve-issue5881.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-issue5881.t Tue Jun 04 11:08:44 2019 +0200
@@ -50,4 +50,4 @@
working directory is now at e6048a693c0d
move:[2] added c
atop:[3] updated b
- working directory is now at c3a628eb9aaf
+ working directory is now at e6048a693c0d
--- a/tests/test-evolve-issue5966.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-issue5966.t Tue Jun 04 11:08:44 2019 +0200
@@ -54,7 +54,7 @@
o 0: empty
- $ hg evolve -t :fail
+ $ hg evolve -t :fail --rev 'first(orphan())'
move:[2] banana
atop:[4] apricot
fix conflicts and see `hg help evolve.interrupted`
@@ -91,7 +91,7 @@
R a
$ hg evolve --continue
evolving 2:34a690fcf6ab "banana"
- working directory is now at e4207a610ed0
+ working directory is now at 581a2bb4704c
$ hg resolve --list
evolve the rest of the stack
@@ -100,16 +100,15 @@
move:[3] coconut
atop:[5] banana
merging a
- working directory is now at d77b4639fe26
All commit evolved
$ hg glog
- @ 6: coconut
+ o 6: coconut
|
o 5: banana
|
- o 4: apricot
+ @ 4: apricot
|
o 0: empty
--- a/tests/test-evolve-noupdate.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-noupdate.t Tue Jun 04 11:08:44 2019 +0200
@@ -1,10 +1,10 @@
Testing the `--no-update` flag to `hg evolve` command
=====================================================
-There is an `--update` flag to `hg evolve` command which defaults to True. The
-`--update` flag updates to the head of the evolved revisions. If you dont want
+There is an `--update` flag to `hg evolve` command which defaults to False. The
+`--update` flag updates to the head of the evolved revisions. If you don't want
to change your working directory or update your working directory to its
-sucessor after hg evolve, `hg evolve --no-update` is the thing for you.
+successor after hg evolve, `hg evolve --no-update` is the thing for you.
This patch tests that flag.
@@ -37,7 +37,7 @@
o 0:8fa14d15e168 added hgignore
() draft
-Making sure we stay where we were is current wdir parent is not obsoleted
+Making sure we stay where we were if current wdir parent was not obsoleted
--------------------------------------------------------------------------
$ hg up .^^
@@ -59,7 +59,7 @@
o 0:8fa14d15e168 added hgignore
() draft
-There is 'working directory is now at' message because it didnt changed
+There is no 'working directory is now at' message because we didn't update
$ hg evolve --all --no-update
move:[3] added c
atop:[5] added b
--- a/tests/test-evolve-obshistory-prune.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-obshistory-prune.t Tue Jun 04 11:08:44 2019 +0200
@@ -38,7 +38,7 @@
$ hg prune -r 'desc(B0)'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at 471f378eab4c
+ working directory is now at 471f378eab4c
1 changesets pruned
$ sync
$ hg log --hidden -G
--- a/tests/test-evolve-order.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-order.t Tue Jun 04 11:08:44 2019 +0200
@@ -62,12 +62,11 @@
move:[2] add _b
atop:[4] add _a
move:[3] add _c
- working directory is now at 52b8f9b04f83
evolve --rev reorders the rev to solve instability. Harder case, obsolescence
accross three stacks in growing rev numbers.
$ hg up "desc(_c)"
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ mkcommit _d
$ hg up "desc(_a)"
0 files updated, 0 files merged, 3 files removed, 0 files unresolved
@@ -76,9 +75,8 @@
$ hg evolve --rev "desc(_b)"
move:[5] add _b
atop:[8] aprime
- working directory is now at 476c9c052aae
$ hg up "desc(_b) - obsolete()"
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg amend -m "bprime"
$ hg up "desc(aprime)"
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -101,7 +99,7 @@
|/
o 0:f92638be10c7@default(public) add p
- $ hg evolve --rev "orphan()"
+ $ hg evolve --rev "orphan()" --update
move:[10] bprime
atop:[11] asecond
move:[6] add _c
@@ -204,10 +202,9 @@
atop:[21] add c1second
move:[25] add b4_
atop:[27] add b3prime
- working directory is now at ea93190a9cd1
Cleanup
- $ hg evolve --rev "(desc(_d)::)"
+ $ hg evolve --rev "(desc(_d)::)" --update
move:[17] add c3_
atop:[28] add c2prime
move:[18] add c4_
@@ -257,5 +254,3 @@
move:[29] add b4_
atop:[34] b3second
skipping 0b9488394e89: divergent rewriting. can't choose destination
- working directory is now at 31809a198477
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-orphan-corner-cases.t Tue Jun 04 11:08:44 2019 +0200
@@ -0,0 +1,123 @@
+=======================================================
+Tests the resolution of orphan changesets: corner cases
+=======================================================
+
+Setup
+=====
+ $ cat >> $HGRCPATH <<EOF
+ > [alias]
+ > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n"
+ > [phases]
+ > publish = False
+ > [extensions]
+ > rebase =
+ > EOF
+ $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+ $ glog() {
+ > hg log -G --template '{rev}:{node|short}@{branch}({phase}) {desc|firstline}\n' "$@"
+ > }
+
+Test to make sure that `lastsolved` always has correct value and things don't break:
+------------------------------------------------------------------------------------
+(before we were not updating it in case of orphan merge)
+
+Prepare the repo:
+ $ hg init orphanmergerepo
+ $ cd orphanmergerepo
+ $ for fn in a b c; do echo foo > $fn; hg ci -Am "added "$fn; done;
+ adding a
+ adding b
+ adding c
+Let's create a merge commit so that we can create orphan merge later:
+ $ hg up 1 -q
+ $ echo feature > f
+ $ hg ci -Am "added feature f"
+ adding f
+ created new head
+ $ hg merge
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+ $ hg ci -m "merge feature branch"
+ $ glog
+ @ 4:2c0a98d38026@default(draft) merge feature branch
+ |\
+ | o 3:4c33e511041e@default(draft) added feature f
+ | |
+ o | 2:8be98ac1a569@default(draft) added c
+ |/
+ o 1:80e6d2c47cfe@default(draft) added b
+ |
+ o 0:f7ad41964313@default(draft) added a
+
+
+Now make the parents of merge commit obsolete to get a orphan merge:
+ $ hg up 2 -q
+ $ echo "fixit" > c
+ $ hg ci --amend -m "updated c"
+ 1 new orphan changesets
+ $ hg up 3 -q
+ $ echo "fixit" > c
+ $ hg ci --amend -m "updated f"
+ $ glog
+ @ 6:086d9bedcd75@default(draft) updated f
+ |
+ | o 5:f84f2c548fbc@default(draft) updated c
+ |/
+ | * 4:2c0a98d38026@default(draft) merge feature branch
+ | |\
+ +---x 3:4c33e511041e@default(draft) added feature f
+ | |
+ | x 2:8be98ac1a569@default(draft) added c
+ |/
+ o 1:80e6d2c47cfe@default(draft) added b
+ |
+ o 0:f7ad41964313@default(draft) added a
+
+
+To check `lastsolved` contain right value after completion of orphan-merge
+resolution there should be one more instability to be evolved; lets create one:
+ $ hg up 1 -q
+ $ echo d > d
+ $ hg ci -Am "added d"
+ adding c
+ adding d
+ created new head
+ $ echo e > e
+ $ hg ci -Am "added e"
+ adding e
+ $ hg up .^
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo "updated d" >> d
+ $ hg ci --amend -m "updated d"
+ 1 new orphan changesets
+ $ glog
+ @ 9:7c4d1834c346@default(draft) updated d
+ |
+ | * 8:421f7614462a@default(draft) added e
+ | |
+ | x 7:afe5acea1990@default(draft) added d
+ |/
+ | o 6:086d9bedcd75@default(draft) updated f
+ |/
+ | o 5:f84f2c548fbc@default(draft) updated c
+ |/
+ | * 4:2c0a98d38026@default(draft) merge feature branch
+ | |\
+ +---x 3:4c33e511041e@default(draft) added feature f
+ | |
+ | x 2:8be98ac1a569@default(draft) added c
+ |/
+ o 1:80e6d2c47cfe@default(draft) added b
+ |
+ o 0:f7ad41964313@default(draft) added a
+
+Now we have one orphan merge and one more orphan cset that we just created.
+Lets evolve:
+ $ hg evolve --all --any
+ move:[4] merge feature branch
+ atop:[5] updated c
+ move:[10] merge feature branch
+ atop:[6] updated f
+ move:[8] added e
+ atop:[9] updated d
--- a/tests/test-evolve-orphan-merge.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-orphan-merge.t Tue Jun 04 11:08:44 2019 +0200
@@ -65,7 +65,7 @@
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve --all
+ $ hg evolve --all --update
move:[3] merging a and b
atop:[4] added b
working directory is now at 91fd62122a4b
@@ -110,7 +110,7 @@
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve --all
+ $ hg evolve --all --update
move:[5] merging a and b
atop:[6] added a
working directory is now at 968d205ba4d8
@@ -214,7 +214,7 @@
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve --all
+ $ hg evolve --all --update
move:[10] foobar to c
atop:[11] foo to c
merging c
@@ -269,7 +269,7 @@
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve --all
+ $ hg evolve --all --update
move:[12] foobar to c
atop:[13] foo to c
merging c
@@ -301,7 +301,7 @@
$ hg prune -r d0f84b25d4e3 -r 928097d0b5b5 -r dc1948a6eeab
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at 8fa14d15e168
+ working directory is now at 8fa14d15e168
3 changesets pruned
$ for ch in l m; do echo foo > $ch; hg ci -Aqm "added "$ch; done;
@@ -346,7 +346,7 @@
|/ () draft
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve --all
+ $ hg evolve --all --update
move:[16] added m
atop:[20] added l
move:[19] merge commit
@@ -371,7 +371,7 @@
$ hg prune -r a446ad3e6700 -r 495d2039f8f1 -r 863d11043c67
0 files updated, 0 files merged, 3 files removed, 0 files unresolved
- working directory now at fccc9de66799
+ working directory is now at fccc9de66799
3 changesets pruned
$ hg glog
@@ -411,7 +411,7 @@
() draft
XXX: We should handle this case too
- $ hg evolve --all
+ $ hg evolve --all --update
move:[23] merged l and x
atop:[25] added x
move:[26] merged l and x
@@ -543,7 +543,7 @@
$ hg prune -r .
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory now at 8fa14d15e168
+ working directory is now at 8fa14d15e168
1 changesets pruned
$ hg up null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-evolve-orphan-split.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-orphan-split.t Tue Jun 04 11:08:44 2019 +0200
@@ -74,7 +74,7 @@
o 0:8fa14d15e168 added hgignore
() draft
- $ hg evolve
+ $ hg evolve --update
move:[2] added c
atop:[4] added a and b
working directory is now at af13f0560b31
@@ -270,4 +270,3 @@
enter the index of the revision you want to select: 1
move:[7] added d
atop:[8] added a b c
- working directory is now at 71e4d45a7aaa
--- a/tests/test-evolve-phase-divergence.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-phase-divergence.t Tue Jun 04 11:08:44 2019 +0200
@@ -199,7 +199,7 @@
XXX: evolve should have mentioned that draft commit is just obsoleted in favour
of public one. From the message it looks like a new commit is created.
- $ hg evolve --phase-divergent
+ $ hg evolve --phase-divergent --update
recreate:[2] tweak a
atop:[1] modify a
no changes to commit
@@ -315,7 +315,7 @@
XXX: we should document what should user expect where running this, writing this
test I have to go through code base to understand what will be the behavior
- $ hg evolve --phase-divergent
+ $ hg evolve --phase-divergent --update
recreate:[4] added bar to foo
atop:[3] added foo to foo
committed as 3d62500c673d
@@ -468,7 +468,7 @@
Resolving the new phase-divergence changeset using `hg evolve`
---------------------------------------------------------------
- $ hg evolve --phase-divergent
+ $ hg evolve --phase-divergent --update
recreate:[7] foo to bar
atop:[6] added bar to bar
committed as 502e73736632
@@ -604,7 +604,7 @@
Using `hg evolve` to resolve phase-divergence
---------------------------------------------
- $ hg evolve --phase-divergent
+ $ hg evolve --phase-divergent --update
recreate:[10] added x to x
atop:[9] added x to x
rebasing to destination parent: 502e73736632
@@ -725,7 +725,7 @@
Resolving divergence using `hg evolve`
-------------------------------------
- $ hg evolve --phase-divergent
+ $ hg evolve --phase-divergent --update
recreate:[14] y to y and foobar to foo
atop:[12] y to y and foobar to foo
rebasing to destination parent: 2352021b3785
@@ -801,7 +801,7 @@
Resolution using `hg evolve --phase-divergent`
----------------------------------------------
- $ hg evolve --phase-divergent
+ $ hg evolve --phase-divergent --update
recreate:[19] added l to l
atop:[17] added l to l
rebasing to destination parent: 8c2bb6fb44e9
@@ -931,14 +931,14 @@
atop:[23] added g
rebasing to destination parent: 21ae52e414e6
no changes to commit
- working directory is now at 428f7900a969
+ working directory is now at e3090241a10c
$ hg glog -r f3794e5a91dc::
- @ 23:428f7900a969 added g
+ o 23:428f7900a969 added g
| () public
o 22:21ae52e414e6 added f
| () public
- o 21:e3090241a10c phase-divergent update to f3794e5a91dc:
+ @ 21:e3090241a10c phase-divergent update to f3794e5a91dc:
| () public
o 17:f3794e5a91dc added l to l
| () public
@@ -997,7 +997,6 @@
recreate:[2] added m
atop:[1] added m and n
committed as 86419909e017
- 1 new orphan changesets
recreate:[3] added n
atop:[1] added m and n
rebasing to destination parent: d3873e73d99e
@@ -1258,7 +1257,6 @@
recreate:[2] added m
atop:[1] added m and n
committed as 86419909e017
- 1 new orphan changesets
recreate:[4] added n
atop:[1] added m and n
rebasing to destination parent: d3873e73d99e
--- a/tests/test-evolve-phase.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-phase.t Tue Jun 04 11:08:44 2019 +0200
@@ -36,11 +36,10 @@
$ hg evolve
move:[2] c
atop:[3] b
- working directory is now at 813dde83a7f3
$ hg glog
- @ 4 - 813dde83a7f3 c (secret)
+ o 4 - 813dde83a7f3 c (secret)
|
- o 3 - fd89d0f19529 b (draft)
+ @ 3 - fd89d0f19529 b (draft)
|
o 0 - cb9a9f314b8b a (draft)
@@ -116,12 +115,12 @@
continue: hg evolve --continue
$ hg evolve -c
evolving 2:13833940840c "c"
- working directory is now at 3d2080c198e5
+ working directory is now at 87495ea7c9ec
$ hg glog
- @ 4 - 3d2080c198e5 c (secret)
+ o 4 - 3d2080c198e5 c (secret)
|
- o 3 - 87495ea7c9ec b (draft)
+ @ 3 - 87495ea7c9ec b (draft)
|
o 0 - cb9a9f314b8b a (draft)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-progress.t Tue Jun 04 11:08:44 2019 +0200
@@ -0,0 +1,195 @@
+Test Evolve progress output
+===========================
+
+ $ . "$TESTDIR/testlib/common.sh"
+ $ cat >> $HGRCPATH <<EOF
+ > [extensions]
+ > evolve=
+ > EOF
+
+ $ hg init progress
+ $ cd progress
+ $ echo a > a
+ $ hg ci -Aqm first
+ $ echo a2 > a
+ $ hg ci -m second
+ $ echo b > b
+ $ hg ci -Aqm third
+ $ echo b2 > b
+ $ hg ci -m fourth
+
+Test progress with --all
+ $ hg co -q 'desc("first")'
+ $ hg amend -m 'first v2'
+ 3 new orphan changesets
+ $ hg evolve --config progress.debug=yes --debug
+ evolve: 1/3 changesets (33.33%)
+ move:[1] second
+ atop:[4] first v2
+ hg rebase -r 4f60c78b6d58 -d fd0a2402f834
+ evolve: 1/3 changesets (33.33%)
+ resolving manifests
+ branchmerge: True, force: True, partial: False
+ ancestor: a87874c6ec31, local: fd0a2402f834+, remote: 4f60c78b6d58
+ a: remote is newer -> g
+ getting a
+ updating: a 1/1 files (100.00%)
+ committing files:
+ a
+ committing manifest
+ committing changelog
+ evolve: 2/3 changesets (66.67%)
+ move:[2] third
+ hg rebase -r 769574b07a96 -d 5f16d91ecde0
+ evolve: 2/3 changesets (66.67%)
+ unmatched files in other:
+ b
+ resolving manifests
+ branchmerge: True, force: True, partial: False
+ ancestor: 4f60c78b6d58, local: 5f16d91ecde0+, remote: 769574b07a96
+ b: remote created -> g
+ getting b
+ updating: b 1/1 files (100.00%)
+ committing files:
+ b
+ committing manifest
+ committing changelog
+ evolve: 3/3 changesets (100.00%)
+ move:[3] fourth
+ hg rebase -r 22782fddc0ab -d 53c0008d98a0
+ evolve: 3/3 changesets (100.00%)
+ resolving manifests
+ branchmerge: True, force: True, partial: False
+ ancestor: 769574b07a96, local: 53c0008d98a0+, remote: 22782fddc0ab
+ b: remote is newer -> g
+ getting b
+ updating: b 1/1 files (100.00%)
+ committing files:
+ b
+ committing manifest
+ committing changelog
+ updating the branch cache
+ obscache is out of date
+ invalid branchheads cache (served): tip differs
+ resolving manifests
+ branchmerge: False, force: False, partial: False
+ ancestor: 385376d04062, local: 385376d04062+, remote: fd0a2402f834
+ b: other deleted -> r
+ removing b
+ updating: b 1/2 files (50.00%)
+ a: remote is newer -> g
+ getting a
+ updating: a 2/2 files (100.00%)
+
+Test progress with -r
+ $ hg co -q 'desc("first")'
+ $ hg amend -m 'first v3'
+ 3 new orphan changesets
+ $ hg evolve -r 'desc("second")' --config progress.debug=yes --debug
+ evolve: 1/1 changesets (100.00%)
+ move:[5] second
+ atop:[8] first v3
+ hg rebase -r 5f16d91ecde0 -d 152c368c622b
+ evolve: 1/1 changesets (100.00%)
+ resolving manifests
+ branchmerge: True, force: True, partial: False
+ ancestor: fd0a2402f834, local: 152c368c622b+, remote: 5f16d91ecde0
+ a: remote is newer -> g
+ getting a
+ updating: a 1/1 files (100.00%)
+ committing files:
+ a
+ committing manifest
+ committing changelog
+ updating the branch cache
+ obscache is out of date
+ resolving manifests
+ branchmerge: False, force: False, partial: False
+ ancestor: df5d742141b0, local: df5d742141b0+, remote: 152c368c622b
+ a: remote is newer -> g
+ getting a
+ updating: a 1/1 files (100.00%)
+
+Test progress with --continue
+ $ hg co -q 'desc("first")'
+ $ echo conflict > a
+ $ hg amend -m 'first v4'
+ 1 new orphan changesets
+ $ hg evolve --all --config progress.debug=yes --debug
+ evolve: 1/3 changesets (33.33%)
+ move:[9] second
+ atop:[10] first v4
+ hg rebase -r df5d742141b0 -d f8d7d38c0a88
+ evolve: 1/3 changesets (33.33%)
+ resolving manifests
+ branchmerge: True, force: True, partial: False
+ ancestor: 152c368c622b, local: f8d7d38c0a88+, remote: df5d742141b0
+ preserving a for resolve of a
+ a: versions differ -> m (premerge)
+ updating: a 1/1 files (100.00%)
+ picked tool ':merge' for a (binary False symlink False changedelete False)
+ merging a
+ my a@f8d7d38c0a88+ other a@df5d742141b0 ancestor a@152c368c622b
+ a: versions differ -> m (merge)
+ updating: a 2/2 files (100.00%)
+ picked tool ':merge' for a (binary False symlink False changedelete False)
+ my a@f8d7d38c0a88+ other a@df5d742141b0 ancestor a@152c368c622b
+ warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+ $ echo resolved > a
+ $ hg resolve -m a
+ (no more unresolved files)
+ continue: hg evolve --continue
+ $ hg evolve --continue --config progress.debug=yes --debug
+ evolving 9:df5d742141b0 "second"
+ committing files:
+ a
+ committing manifest
+ committing changelog
+ updating the branch cache
+ obscache is out of date
+ move:[6] third
+ atop:[11] second
+ hg rebase -r 53c0008d98a0 -d 60a86497fbfe
+ evolve: 2/3 changesets (66.67%)
+ unmatched files in other:
+ b
+ resolving manifests
+ branchmerge: True, force: True, partial: False
+ ancestor: 5f16d91ecde0, local: 60a86497fbfe+, remote: 53c0008d98a0
+ b: remote created -> g
+ getting b
+ updating: b 1/1 files (100.00%)
+ committing files:
+ b
+ committing manifest
+ committing changelog
+ move:[7] fourth
+ hg rebase -r 385376d04062 -d b2de95304e32
+ evolve: 3/3 changesets (100.00%)
+ resolving manifests
+ branchmerge: True, force: True, partial: False
+ ancestor: 53c0008d98a0, local: b2de95304e32+, remote: 385376d04062
+ b: remote is newer -> g
+ getting b
+ updating: b 1/1 files (100.00%)
+ committing files:
+ b
+ committing manifest
+ committing changelog
+ updating the branch cache
+ obscache is out of date
+ invalid branchheads cache (served): tip differs
+ resolving manifests
+ branchmerge: False, force: False, partial: False
+ ancestor: c6e6fdb1d046, local: c6e6fdb1d046+, remote: f8d7d38c0a88
+ b: other deleted -> r
+ removing b
+ updating: b 1/2 files (50.00%)
+ a: remote is newer -> g
+ getting a
+ updating: a 2/2 files (100.00%)
+ working directory is now at f8d7d38c0a88
+
+ $ cd ..
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-public-content-divergent-corner-cases.t Tue Jun 04 11:08:44 2019 +0200
@@ -0,0 +1,763 @@
+===============================================================
+Tests the resolution of public content divergence: corner cases
+===============================================================
+
+This file intend to cover cases that are specific enough to not fit in the
+other cases.
+
+Setup
+=====
+ $ cat >> $HGRCPATH <<EOF
+ > [alias]
+ > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {instabilities}\n\n"
+ > [phases]
+ > publish = False
+ > [extensions]
+ > rebase =
+ > EOF
+ $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+Testing when divergence is not created by actual diff change, but because of rebasing:
+--------------------------------------------------------------------------------------
+
+Prepare the repo:
+
+ $ hg init rebasediv
+ $ cd rebasediv
+ $ for ch in a b c; do
+ > echo $ch > $ch;
+ > hg ci -Am "added "$ch;
+ > done;
+ adding a
+ adding b
+ adding c
+
+ $ hg glog
+ @ 2:155349b645be added c
+ | draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+On server side: a new cset is added based on rev 1 and rev 2 is rebased on newly added cset:
+
+ $ hg up .^ -q
+ $ echo d > d
+ $ hg ci -Am "added d"
+ adding d
+ created new head
+
+ $ hg rebase -r 2 -d .
+ rebasing 2:155349b645be "added c"
+
+ $ hg glog
+ o 4:c0d7ee6604ea added c
+ | draft
+ |
+ @ 3:c9241b0f2d5b added d
+ | draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+On user side: user has not pulled yet and amended the rev 2 which created the divergence after pull:
+ $ hg up 2 --hidden -q
+ updated to hidden changeset 155349b645be
+ (hidden revision '155349b645be' was rewritten as: c0d7ee6604ea)
+ working directory parent is obsolete! (155349b645be)
+
+ $ echo cc >> c
+ $ hg ci --amend -m "updated c"
+ 2 new content-divergent changesets
+
+Lets change the phase to --public of branch which is pulled from server:
+ $ hg phase --public -r 4
+ $ hg glog -p
+ @ 5:f5f9b4fc8b77 updated c
+ | draft content-divergent
+ |
+ | diff -r 5f6d8a4bf34a -r f5f9b4fc8b77 c
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,2 @@
+ | +c
+ | +cc
+ |
+ | o 4:c0d7ee6604ea added c
+ | | public
+ | |
+ | | diff -r c9241b0f2d5b -r c0d7ee6604ea c
+ | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | | +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ | | @@ -0,0 +1,1 @@
+ | | +c
+ | |
+ | o 3:c9241b0f2d5b added d
+ |/ public
+ |
+ | diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +d
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ | diff -r 9092f1db7931 -r 5f6d8a4bf34a b
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/b Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +b
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ diff -r 000000000000 -r 9092f1db7931 a
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +a
+
+
+Evolve:
+ $ hg evolve --content-divergent
+ merge:[4] added c
+ with: [5] updated c
+ base: [2] added c
+ rebasing "other" content-divergent changeset f5f9b4fc8b77 on c9241b0f2d5b
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ committed as 3b336cbee992
+ working directory is now at 3b336cbee992
+
+ $ hg glog -p
+ @ 8:3b336cbee992 phase-divergent update to c0d7ee6604ea:
+ | draft
+ |
+ | diff -r c0d7ee6604ea -r 3b336cbee992 c
+ | --- a/c Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,1 +1,2 @@
+ | c
+ | +cc
+ |
+ o 4:c0d7ee6604ea added c
+ | public
+ |
+ | diff -r c9241b0f2d5b -r c0d7ee6604ea c
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c
+ |
+ o 3:c9241b0f2d5b added d
+ | public
+ |
+ | diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +d
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ | diff -r 9092f1db7931 -r 5f6d8a4bf34a b
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/b Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +b
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ diff -r 000000000000 -r 9092f1db7931 a
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +a
+
+Check that we don't have any unstable cset now:
+ $ hg evolve -l
+ $ cd ..
+
+Different parent, simple conflict on relocate, deleted file on actual merge
+---------------------------------------------------------------------------
+
+Changeset "added c e" is also removing 'd'. This should conflict with the update
+to 'd' in the successors of 'adding d' when solving the content divergence.
+
+ $ hg init pubdiv-parent-deleted-file
+ $ cd pubdiv-parent-deleted-file
+ $ for ch in a b c d; do
+ > echo $ch > $ch;
+ > hg ci -Aqm "added "$ch;
+ > done;
+
+ $ hg up 'desc("added b")'
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo cfoo > c
+ $ echo e > e
+ $ hg add c e
+ $ hg ci -m "added c e"
+ created new head
+
+ $ hg up 'desc("re:added c$")'
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo dd > d
+ $ hg add d
+ $ hg ci -m "added d"
+ created new head
+
+ $ hg glog --patch --rev 'sort(all(), "topo")'
+ @ 5:93cd84bbdaca added d
+ | draft
+ |
+ | diff -r 155349b645be -r 93cd84bbdaca d
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +dd
+ |
+ | o 3:9150fe93bec6 added d
+ |/ draft
+ |
+ | diff -r 155349b645be -r 9150fe93bec6 d
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +d
+ |
+ o 2:155349b645be added c
+ | draft
+ |
+ | diff -r 5f6d8a4bf34a -r 155349b645be c
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c
+ |
+ | o 4:e568fd1029bb added c e
+ |/ draft
+ |
+ | diff -r 5f6d8a4bf34a -r e568fd1029bb c
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +cfoo
+ | diff -r 5f6d8a4bf34a -r e568fd1029bb e
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/e Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +e
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ | diff -r 9092f1db7931 -r 5f6d8a4bf34a b
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/b Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +b
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+ diff -r 000000000000 -r 9092f1db7931 a
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +a
+
+ $ hg prune 'min(desc("added d"))' -s 'max(desc("added d"))'
+ 1 changesets pruned
+ $ hg prune 'min(desc("added d"))' -s 'desc("added c e")' --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+
+Change phase to public for one head:
+ $ hg phase --public -r 'max(desc("added d"))'
+
+ $ hg glog
+ @ 5:93cd84bbdaca added d
+ | public
+ |
+ | * 4:e568fd1029bb added c e
+ | | draft content-divergent
+ | |
+ o | 2:155349b645be added c
+ |/ public
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+
+ $ hg glog --patch --rev 'sort(all(), "topo")' --hidden
+ @ 5:93cd84bbdaca added d
+ | public
+ |
+ | diff -r 155349b645be -r 93cd84bbdaca d
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +dd
+ |
+ | x 3:9150fe93bec6 added d
+ |/ draft
+ |
+ | diff -r 155349b645be -r 9150fe93bec6 d
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +d
+ |
+ o 2:155349b645be added c
+ | public
+ |
+ | diff -r 5f6d8a4bf34a -r 155349b645be c
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c
+ |
+ | * 4:e568fd1029bb added c e
+ |/ draft content-divergent
+ |
+ | diff -r 5f6d8a4bf34a -r e568fd1029bb c
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +cfoo
+ | diff -r 5f6d8a4bf34a -r e568fd1029bb e
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/e Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +e
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ | diff -r 9092f1db7931 -r 5f6d8a4bf34a b
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/b Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +b
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ diff -r 000000000000 -r 9092f1db7931 a
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +a
+
+
+ $ hg obslog --all --rev tip --patch
+ @ 93cd84bbdaca (5) added d
+ |
+ | * e568fd1029bb (4) added c e
+ |/
+ x 9150fe93bec6 (3) added d
+ rewritten(content) as 93cd84bbdaca using prune by test (Thu Jan 01 00:00:00 1970 +0000)
+ diff -r 9150fe93bec6 -r 93cd84bbdaca d
+ --- a/d Thu Jan 01 00:00:00 1970 +0000
+ +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -d
+ +dd
+
+ rewritten(description, parent, content) as e568fd1029bb using prune by test (Thu Jan 01 00:00:00 1970 +0000)
+ (No patch available, changesets rebased)
+
+
+ $ hg evolve --content-divergent --any --update
+ merge:[5] added d
+ with: [4] added c e
+ base: [3] added d
+ rebasing "other" content-divergent changeset e568fd1029bb on 155349b645be
+ merging c
+ warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ hg diff
+ diff -r 155349b645be c
+ --- a/c Thu Jan 01 00:00:00 1970 +0000
+ +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,5 @@
+ +<<<<<<< destination: 155349b645be - test: added c
+ c
+ +=======
+ +cfoo
+ +>>>>>>> evolving: e568fd1029bb - test: added c e
+ diff -r 155349b645be e
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/e Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +e
+
+ $ echo c > c
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ evolving 4:e568fd1029bb "added c e"
+ file 'd' was deleted in other but was modified in local.
+ What do you want to do?
+ use (c)hanged version, (d)elete, or leave (u)nresolved? u
+ 1 files updated, 0 files merged, 0 files removed, 1 files unresolved
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ hg sum
+ parent: 5:93cd84bbdaca
+ added d
+ parent: 6:2af3359250d3 tip (content-divergent)
+ added c e
+ branch: default
+ commit: 1 modified, 1 unknown, 1 unresolved (merge)
+ update: (current)
+ phases: 1 draft
+ content-divergent: 1 changesets
+ evolve: (evolve --continue)
+
+ $ echo resolved > d
+ $ hg resolve -m d
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ committed as bc1f4610744c
+ working directory is now at bc1f4610744c
+
+ $ hg export
+ # HG changeset patch
+ # User test
+ # Date 0 0
+ # Thu Jan 01 00:00:00 1970 +0000
+ # Node ID bc1f4610744c6aa0e851d3876a61bfff6243b31c
+ # Parent 93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
+ phase-divergent update to 93cd84bbdaca:
+
+ added c e
+
+ diff -r 93cd84bbdaca -r bc1f4610744c d
+ --- a/d Thu Jan 01 00:00:00 1970 +0000
+ +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -dd
+ +resolved
+ diff -r 93cd84bbdaca -r bc1f4610744c e
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/e Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +e
+
+ $ hg evolve -l
+ $ cd ..
+
+Test a pratical "rebase" case
+=============================
+
+Initial setup
+
+ $ hg init rebase-divergence
+ $ cd rebase-divergence
+ $ echo root >> root
+ $ hg add root
+ $ hg commit -m root
+ $ for x in c_A c_B c_C c_D; do
+ > echo $x >> $x
+ > hg add $x
+ > hg commit -m $x
+ > done
+
+ $ hg up 'desc("c_A")'
+ 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
+
+ $ for x in c_E c_F; do
+ > echo $x >> $x
+ > hg add $x
+ > hg commit -m $x
+ > done
+ created new head
+
+(creating divergence locally for simplicity)
+
+ $ node=`hg log --rev 'desc("c_E")' -T '{node}'`
+ $ hg rebase -s $node -d 'desc("c_B")'
+ rebasing 5:4ab2719bbab9 "c_E"
+ rebasing 6:77ccbf8d837e "c_F" (tip)
+ $ hg phase --public tip
+ $ hg rebase --hidden -s $node -d 'desc("c_C")' --config experimental.evolution.allowdivergence=yes
+ rebasing 5:4ab2719bbab9 "c_E"
+ rebasing 6:77ccbf8d837e "c_F"
+ 2 new content-divergent changesets
+
+ $ hg sum
+ parent: 8:a52ac76b45f5
+ c_F
+ branch: default
+ commit: (clean)
+ update: 4 new changesets, 3 branch heads (merge)
+ phases: 4 draft
+ content-divergent: 2 changesets
+ $ hg evolve --list
+ b4a584aea4bd: c_E
+ content-divergent: c7d2d47c7240 (public) (precursor 4ab2719bbab9)
+
+ 8ae8db670b4a: c_F
+ content-divergent: a52ac76b45f5 (public) (precursor 77ccbf8d837e)
+
+ $ hg log -G --patch
+ * changeset: 10:8ae8db670b4a
+ | tag: tip
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | instability: content-divergent
+ | summary: c_F
+ |
+ | diff -r b4a584aea4bd -r 8ae8db670b4a c_F
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c_F Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c_F
+ |
+ * changeset: 9:b4a584aea4bd
+ | parent: 3:abb77b893f28
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | instability: content-divergent
+ | summary: c_E
+ |
+ | diff -r abb77b893f28 -r b4a584aea4bd c_E
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c_E Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c_E
+ |
+ | @ changeset: 8:a52ac76b45f5
+ | | user: test
+ | | date: Thu Jan 01 00:00:00 1970 +0000
+ | | summary: c_F
+ | |
+ | | diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
+ | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | | +++ b/c_F Thu Jan 01 00:00:00 1970 +0000
+ | | @@ -0,0 +1,1 @@
+ | | +c_F
+ | |
+ | o changeset: 7:c7d2d47c7240
+ | | parent: 2:eb1b4e1205b8
+ | | user: test
+ | | date: Thu Jan 01 00:00:00 1970 +0000
+ | | summary: c_E
+ | |
+ | | diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
+ | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | | +++ b/c_E Thu Jan 01 00:00:00 1970 +0000
+ | | @@ -0,0 +1,1 @@
+ | | +c_E
+ | |
+ +---o changeset: 4:dbb960d6c97c
+ | | user: test
+ | | date: Thu Jan 01 00:00:00 1970 +0000
+ | | summary: c_D
+ | |
+ | | diff -r abb77b893f28 -r dbb960d6c97c c_D
+ | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | | +++ b/c_D Thu Jan 01 00:00:00 1970 +0000
+ | | @@ -0,0 +1,1 @@
+ | | +c_D
+ | |
+ o | changeset: 3:abb77b893f28
+ |/ user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: c_C
+ |
+ | diff -r eb1b4e1205b8 -r abb77b893f28 c_C
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c_C Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c_C
+ |
+ o changeset: 2:eb1b4e1205b8
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: c_B
+ |
+ | diff -r e31751786014 -r eb1b4e1205b8 c_B
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c_B Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c_B
+ |
+ o changeset: 1:e31751786014
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: c_A
+ |
+ | diff -r 1e4be0697311 -r e31751786014 c_A
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c_A Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c_A
+ |
+ o changeset: 0:1e4be0697311
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: root
+
+ diff -r 000000000000 -r 1e4be0697311 root
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/root Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +root
+
+
+Run automatic evolution
+
+ $ hg evolve --content-divergent --rev 'not public() and desc("c_E")::'
+ merge:[7] c_E
+ with: [9] c_E
+ base: [5] c_E
+ rebasing "other" content-divergent changeset b4a584aea4bd on eb1b4e1205b8
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ content divergence resolution between c7d2d47c7240 (public) and 0773642cfa95 has same content as c7d2d47c7240, discarding 0773642cfa95
+ merge:[8] c_F
+ with: [10] c_F
+ base: [6] c_F
+ rebasing "other" content-divergent changeset 8ae8db670b4a on c7d2d47c7240
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ content divergence resolution between a52ac76b45f5 (public) and 6a87ed4aa317 has same content as a52ac76b45f5, discarding 6a87ed4aa317
+ $ hg sum
+ parent: 8:a52ac76b45f5 tip
+ c_F
+ branch: default
+ commit: (clean)
+ update: 2 new changesets, 2 branch heads (merge)
+ phases: 2 draft
+
+ $ hg evolve --list
+
+ $ hg log -G --patch
+ @ changeset: 8:a52ac76b45f5
+ | tag: tip
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: c_F
+ |
+ | diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c_F Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c_F
+ |
+ o changeset: 7:c7d2d47c7240
+ | parent: 2:eb1b4e1205b8
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: c_E
+ |
+ | diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c_E Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c_E
+ |
+ | o changeset: 4:dbb960d6c97c
+ | | user: test
+ | | date: Thu Jan 01 00:00:00 1970 +0000
+ | | summary: c_D
+ | |
+ | | diff -r abb77b893f28 -r dbb960d6c97c c_D
+ | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | | +++ b/c_D Thu Jan 01 00:00:00 1970 +0000
+ | | @@ -0,0 +1,1 @@
+ | | +c_D
+ | |
+ | o changeset: 3:abb77b893f28
+ |/ user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: c_C
+ |
+ | diff -r eb1b4e1205b8 -r abb77b893f28 c_C
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c_C Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c_C
+ |
+ o changeset: 2:eb1b4e1205b8
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: c_B
+ |
+ | diff -r e31751786014 -r eb1b4e1205b8 c_B
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c_B Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c_B
+ |
+ o changeset: 1:e31751786014
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: c_A
+ |
+ | diff -r 1e4be0697311 -r e31751786014 c_A
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/c_A Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,1 @@
+ | +c_A
+ |
+ o changeset: 0:1e4be0697311
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: root
+
+ diff -r 000000000000 -r 1e4be0697311 root
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/root Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +root
+
+ $ hg export tip
+ # HG changeset patch
+ # User test
+ # Date 0 0
+ # Thu Jan 01 00:00:00 1970 +0000
+ # Node ID a52ac76b45f523a039fc4a938d79874f4bdb1a85
+ # Parent c7d2d47c7240562be5cbd1a24080dd0396178709
+ c_F
+
+ diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/c_F Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +c_F
+
+ $ hg obslog --rev a52ac76b45f5
+ @ a52ac76b45f5 (8) c_F
+ |\
+ x | 6a87ed4aa317 (12) c_F
+ | | rewritten as a52ac76b45f5 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ | |
+ x | 8ae8db670b4a (10) c_F
+ |/ rewritten(parent) as 6a87ed4aa317 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ |
+ x 77ccbf8d837e (6) c_F
+ rewritten(parent) as 8ae8db670b4a using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
+ rewritten(parent) as a52ac76b45f5 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-public-content-divergent-discard.t Tue Jun 04 11:08:44 2019 +0200
@@ -0,0 +1,694 @@
+===============================================================================
+Tests the resolution of public content divergence: when merging leads to public
+===============================================================================
+
+This file intend to cover all the cases possible when merging the other
+divergent cset into public cset leads to public cset itself.
+Possible variants are:
+
+parent: same/different
+relocation: [no-]conflict
+merging: [no-]conflict
+
+Setup
+=====
+ $ cat >> $HGRCPATH <<EOF
+ > [alias]
+ > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {instabilities}\n\n"
+ > [phases]
+ > publish = False
+ > [extensions]
+ > rebase =
+ > EOF
+ $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+Testing when same parent, no conflict:
+--------------------------------------
+
+ $ hg init pubdiv1
+ $ cd pubdiv1
+ $ for ch in a b c; do
+ > echo $ch > $ch;
+ > hg ci -Am "added "$ch;
+ > done;
+ adding a
+ adding b
+ adding c
+
+ $ hg up .^
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo ch > ch
+ $ hg add ch
+ $ hg ci -m "added ch"
+ created new head
+
+ $ hg up .^
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo ch > ch
+ $ hg add ch
+ $ hg ci -m "added c"
+ created new head
+
+ $ hg glog
+ @ 4:f7c1071f1e7c added c
+ | draft
+ |
+ | o 3:90522bccf499 added ch
+ |/ draft
+ |
+ | o 2:155349b645be added c
+ |/ draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+ $ hg prune 2 -s 3
+ 1 changesets pruned
+ $ hg prune 2 -s 4 --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+ $ hg phase --public -r 4
+
+ $ hg glog
+ @ 4:f7c1071f1e7c added c
+ | public
+ |
+ | * 3:90522bccf499 added ch
+ |/ draft content-divergent
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ $ hg evolve --content-divergent --any
+ merge:[4] added c
+ with: [3] added ch
+ base: [2] added c
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ other divergent changeset 90522bccf499 has same content as local f7c1071f1e7c and differs by "description" only, discarding 90522bccf499
+ content divergence resolution between f7c1071f1e7c (public) and 90522bccf499 has same content as f7c1071f1e7c, discarding 90522bccf499
+
+ $ hg evolve -l
+
+ $ hg par
+ changeset: 4:f7c1071f1e7c
+ tag: tip
+ parent: 1:5f6d8a4bf34a
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: added c
+
+ $ cd ..
+
+Testing when different parent, no conflict:
+-------------------------------------------
+
+ $ hg init pubdiv2
+ $ cd pubdiv2
+ $ for ch in a b c d; do
+ > echo $ch > $ch;
+ > hg ci -Am "added "$ch;
+ > done;
+ adding a
+ adding b
+ adding c
+ adding d
+
+ $ hg up 1
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo dh > dh
+ $ hg add dh
+ $ hg ci -m "added dh"
+ created new head
+
+ $ hg up 2
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo dh > dh
+ $ hg add dh
+ $ hg ci -m "added d"
+ created new head
+
+ $ hg glog
+ @ 5:e800202333a4 added d
+ | draft
+ |
+ | o 4:5acd58ef5066 added dh
+ | | draft
+ | |
+ +---o 3:9150fe93bec6 added d
+ | | draft
+ | |
+ o | 2:155349b645be added c
+ |/ draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+ $ hg prune 3 -s 4
+ 1 changesets pruned
+ $ hg prune 3 -s 5 --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+ $ hg phase --public -r 5
+
+ $ hg glog
+ @ 5:e800202333a4 added d
+ | public
+ |
+ | * 4:5acd58ef5066 added dh
+ | | draft content-divergent
+ | |
+ o | 2:155349b645be added c
+ |/ public
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ $ hg evolve --content-divergent --any
+ merge:[5] added d
+ with: [4] added dh
+ base: [3] added d
+ rebasing "other" content-divergent changeset 5acd58ef5066 on 155349b645be
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ other divergent changeset ae3429430ef1 has same content as local e800202333a4 and differs by "description" only, discarding ae3429430ef1
+ content divergence resolution between e800202333a4 (public) and ae3429430ef1 has same content as e800202333a4, discarding ae3429430ef1
+
+ $ hg evolve -l
+
+ $ hg par
+ changeset: 5:e800202333a4
+ tag: tip
+ parent: 2:155349b645be
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: added d
+
+ $ cd ..
+
+Testing when same parent, merging conflict:
+-------------------------------------------
+
+ $ hg init pubdiv3
+ $ cd pubdiv3
+ $ for ch in a b c; do
+ > echo $ch > $ch;
+ > hg ci -Am "added "$ch;
+ > done;
+ adding a
+ adding b
+ adding c
+
+ $ hg up .^
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo chconflict > ch
+ $ hg add ch
+ $ hg ci -m "added ch"
+ created new head
+
+ $ hg up .^
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo ch > ch
+ $ hg add ch
+ $ hg ci -m "added c"
+ created new head
+
+ $ hg glog
+ @ 4:f7c1071f1e7c added c
+ | draft
+ |
+ | o 3:229da2719b19 added ch
+ |/ draft
+ |
+ | o 2:155349b645be added c
+ |/ draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+ $ hg prune 2 -s 3
+ 1 changesets pruned
+ $ hg prune 2 -s 4 --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+ $ hg phase --public -r 4
+
+ $ hg glog
+ @ 4:f7c1071f1e7c added c
+ | public
+ |
+ | * 3:229da2719b19 added ch
+ |/ draft content-divergent
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ $ hg evolve --content-divergent --any
+ merge:[4] added c
+ with: [3] added ch
+ base: [2] added c
+ merging ch
+ warning: conflicts while merging ch! (edit, then use 'hg resolve --mark')
+ 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ hg diff
+ diff -r f7c1071f1e7c ch
+ --- a/ch Thu Jan 01 00:00:00 1970 +0000
+ +++ b/ch Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,5 @@
+ +<<<<<<< local: f7c1071f1e7c - test: added c
+ ch
+ +=======
+ +chconflict
+ +>>>>>>> other: 229da2719b19 - test: added ch
+
+ $ echo ch > ch
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ other divergent changeset 229da2719b19 has same content as local f7c1071f1e7c and differs by "description" only, discarding 229da2719b19
+ working directory is now at f7c1071f1e7c
+
+ $ hg evolve -l
+
+ $ hg par
+ changeset: 4:f7c1071f1e7c
+ tag: tip
+ parent: 1:5f6d8a4bf34a
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: added c
+
+ $ cd ..
+
+Testing when different parent, relocation conflict:
+---------------------------------------------------
+
+ $ hg init pubdiv4
+ $ cd pubdiv4
+ $ for ch in a b c d; do
+ > echo $ch > $ch;
+ > hg ci -Am "added "$ch;
+ > done;
+ adding a
+ adding b
+ adding c
+ adding d
+
+ $ hg up 1
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo dh > dh
+ $ echo cc > c
+ $ hg add dh c
+ $ hg ci -m "added dh"
+ created new head
+
+ $ hg up 2
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo dh > dh
+ $ hg add dh
+ $ hg ci -m "added d"
+ created new head
+
+ $ hg glog
+ @ 5:e800202333a4 added d
+ | draft
+ |
+ | o 4:f89a8e2f86ac added dh
+ | | draft
+ | |
+ +---o 3:9150fe93bec6 added d
+ | | draft
+ | |
+ o | 2:155349b645be added c
+ |/ draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+ $ hg prune 3 -s 4
+ 1 changesets pruned
+ $ hg prune 3 -s 5 --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+ $ hg phase --public -r 5
+
+ $ hg glog
+ @ 5:e800202333a4 added d
+ | public
+ |
+ | * 4:f89a8e2f86ac added dh
+ | | draft content-divergent
+ | |
+ o | 2:155349b645be added c
+ |/ public
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ $ hg evolve --content-divergent --any
+ merge:[5] added d
+ with: [4] added dh
+ base: [3] added d
+ rebasing "other" content-divergent changeset f89a8e2f86ac on 155349b645be
+ merging c
+ warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ echo c > c
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ evolving 4:f89a8e2f86ac "added dh"
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ other divergent changeset bc309da55b88 has same content as local e800202333a4 and differs by "description" only, discarding bc309da55b88
+ working directory is now at e800202333a4
+
+ $ hg evolve -l
+
+ $ hg par
+ changeset: 5:e800202333a4
+ tag: tip
+ parent: 2:155349b645be
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: added d
+
+ $ cd ..
+
+Testing when different parent, merging conflict:
+------------------------------------------------
+
+ $ hg init pubdiv5
+ $ cd pubdiv5
+ $ for ch in a b c d; do
+ > echo $ch > $ch;
+ > hg ci -Am "added "$ch;
+ > done;
+ adding a
+ adding b
+ adding c
+ adding d
+
+ $ hg up 1
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo dhconflict > dh
+ $ hg add dh
+ $ hg ci -m "added dh"
+ created new head
+
+ $ hg up 2
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo dh > dh
+ $ hg add dh
+ $ hg ci -m "added d"
+ created new head
+
+ $ hg glog
+ @ 5:e800202333a4 added d
+ | draft
+ |
+ | o 4:db0b7bba0aae added dh
+ | | draft
+ | |
+ +---o 3:9150fe93bec6 added d
+ | | draft
+ | |
+ o | 2:155349b645be added c
+ |/ draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+ $ hg prune 3 -s 4
+ 1 changesets pruned
+ $ hg prune 3 -s 5 --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+ $ hg phase --public -r 5
+
+ $ hg glog
+ @ 5:e800202333a4 added d
+ | public
+ |
+ | * 4:db0b7bba0aae added dh
+ | | draft content-divergent
+ | |
+ o | 2:155349b645be added c
+ |/ public
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ $ hg evolve --content-divergent --any
+ merge:[5] added d
+ with: [4] added dh
+ base: [3] added d
+ rebasing "other" content-divergent changeset db0b7bba0aae on 155349b645be
+ merging dh
+ warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
+ 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ echo dh > dh
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ other divergent changeset a5bbf2042450 has same content as local e800202333a4 and differs by "description" only, discarding a5bbf2042450
+ working directory is now at e800202333a4
+
+ $ hg evolve -l
+
+ $ hg par
+ changeset: 5:e800202333a4
+ tag: tip
+ parent: 2:155349b645be
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: added d
+
+ $ cd ..
+
+Testing when different parent, conflict in relocation and merging:
+------------------------------------------------------------------
+
+ $ hg init pubdiv6
+ $ cd pubdiv6
+ $ for ch in a b c d; do
+ > echo $ch > $ch;
+ > hg ci -Am "added "$ch;
+ > done;
+ adding a
+ adding b
+ adding c
+ adding d
+
+ $ hg up 1
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo dhconflict > dh
+ $ echo cc > c
+ $ hg add dh c
+ $ hg ci -m "added dh"
+ created new head
+
+ $ hg up 2
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo dh > dh
+ $ hg add dh
+ $ hg ci -m "added d"
+ created new head
+
+ $ hg glog
+ @ 5:e800202333a4 added d
+ | draft
+ |
+ | o 4:67b19bbd770f added dh
+ | | draft
+ | |
+ +---o 3:9150fe93bec6 added d
+ | | draft
+ | |
+ o | 2:155349b645be added c
+ |/ draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+ $ hg prune 3 -s 4
+ 1 changesets pruned
+ $ hg prune 3 -s 5 --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+ $ hg phase --public -r 5
+
+ $ hg glog
+ @ 5:e800202333a4 added d
+ | public
+ |
+ | * 4:67b19bbd770f added dh
+ | | draft content-divergent
+ | |
+ o | 2:155349b645be added c
+ |/ public
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ $ hg evolve --content-divergent --any
+ merge:[5] added d
+ with: [4] added dh
+ base: [3] added d
+ rebasing "other" content-divergent changeset 67b19bbd770f on 155349b645be
+ merging c
+ warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ echo c > c
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ evolving 4:67b19bbd770f "added dh"
+ merging dh
+ warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
+ 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ echo dh > dh
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ other divergent changeset 09054d1f3c97 has same content as local e800202333a4 and differs by "description" only, discarding 09054d1f3c97
+ working directory is now at e800202333a4
+
+ $ hg evolve -l
+
+ $ hg par
+ changeset: 5:e800202333a4
+ tag: tip
+ parent: 2:155349b645be
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: added d
+
+ $ cd ..
+
+Testing that we warn the user for the metadata being lost in divergence resolution:
+-----------------------------------------------------------------------------------
+
+ $ hg init pubdiv7
+ $ cd pubdiv7
+ $ for ch in a b c d; do
+ > echo $ch > $ch;
+ > hg ci -Am "added "$ch;
+ > done;
+ adding a
+ adding b
+ adding c
+ adding d
+
+ $ echo dada > d
+ $ hg amend
+ $ hg up -r "desc('added c')"
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ hg branch feature
+ marked working directory as branch feature
+ (branches are permanent and global, did you want a bookmark?)
+ $ echo dada > d
+ $ hg ci -Am "added d"
+ adding d
+ $ hg prune -r "min(desc('added d'))" -s . --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+
+(publish one side)
+ $ hg phase --public
+ $ hg up -r "draft()"
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+(make other divergent a closed branch head)
+ $ hg ci --amend -m "closing feature branch" --close-branch
+
+ $ hg glog
+ @ 6:af442315d198 closing feature branch
+ | draft content-divergent
+ |
+ | o 5:497d0d2b90ba added d
+ |/ public
+ |
+ o 2:155349b645be added c
+ | public
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+
+Run automatic evolution:
+
+ $ hg evolve --content-divergent
+ merge:[5] added d
+ with: [6] closing feature branch
+ base: [3] added d
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ other divergent changeset af442315d198 is a closed branch head and differs from local 497d0d2b90ba by "branch, description" only, discarding af442315d198
+ content divergence resolution between 497d0d2b90ba (public) and af442315d198 has same content as 497d0d2b90ba, discarding af442315d198
+ working directory is now at 497d0d2b90ba
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-public-content-divergent-main.t Tue Jun 04 11:08:44 2019 +0200
@@ -0,0 +1,628 @@
+=============================================================
+Tests the resolution of public content divergence: main cases
+=============================================================
+
+This file intend to cover all the common cases of public content divergence.
+That is all the variant of:
+parent: same/different
+relocation: [no-]conflict
+merging: [no-]conflict
+
+Setup
+=====
+ $ cat >> $HGRCPATH <<EOF
+ > [alias]
+ > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {instabilities}\n\n"
+ > [phases]
+ > publish = False
+ > [extensions]
+ > rebase =
+ > EOF
+ $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+Testing when same parent, no conflict:
+--------------------------------------
+
+Prepare the repository:
+
+ $ hg init pubdiv1
+ $ cd pubdiv1
+ $ for ch in a b; do
+ > echo $ch > $ch;
+ > hg ci -Aqm "added "$ch;
+ > done;
+ $ hg glog
+ @ 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+Make an amend and change phase to public:
+
+ $ sed -i "1 i I am first" b
+ $ hg amend
+ $ hg phase --public
+
+Amend again to create a cset divergent to public one:
+
+ $ hg up 1 --hidden -q
+ updated to hidden changeset 5f6d8a4bf34a
+ (hidden revision '5f6d8a4bf34a' was rewritten as: 44f360db368f)
+ working directory parent is obsolete! (5f6d8a4bf34a)
+
+ $ echo "I am second" >> b
+ $ hg ci --amend -m "updated b"
+ 1 new content-divergent changesets
+
+ $ hg glog
+ @ 3:dcdaf152280a updated b
+ | draft content-divergent
+ |
+ | o 2:44f360db368f added b
+ |/ public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+
+Lets resolve the public content-divergence:
+
+ $ hg evolve --content-divergent
+ merge:[2] added b
+ with: [3] updated b
+ base: [1] added b
+ merging b
+ 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+ committed as c1aa9cfb6cf8
+ working directory is now at c1aa9cfb6cf8
+
+Following graph log shows that it correctly merged the two divergent csets:
+
+ $ hg glog -p
+ @ 5:c1aa9cfb6cf8 phase-divergent update to 44f360db368f:
+ | draft
+ |
+ | diff -r 44f360db368f -r c1aa9cfb6cf8 b
+ | --- a/b Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/b Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,2 +1,3 @@
+ | I am first
+ | b
+ | +I am second
+ |
+ o 2:44f360db368f added b
+ | public
+ |
+ | diff -r 9092f1db7931 -r 44f360db368f b
+ | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/b Thu Jan 01 00:00:00 1970 +0000
+ | @@ -0,0 +1,2 @@
+ | +I am first
+ | +b
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ diff -r 000000000000 -r 9092f1db7931 a
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +a
+
+ $ hg evolve -l
+ $ cd ..
+
+Testing when same parent, merging conflict:
+-------------------------------------------
+
+Prepare the repository:
+
+ $ hg init pubdiv2
+ $ cd pubdiv2
+ $ for ch in a b; do
+ > echo $ch > $ch;
+ > hg ci -Aqm "added "$ch;
+ > done;
+ $ hg glog
+ @ 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+Make an amend and change phase to public:
+
+ $ echo "I am foo" > b
+ $ hg amend
+ $ hg phase --public
+
+Amend again to create a cset divergent to public one:
+
+ $ hg up 1 --hidden -q
+ updated to hidden changeset 5f6d8a4bf34a
+ (hidden revision '5f6d8a4bf34a' was rewritten as: 580f2d01e52c)
+ working directory parent is obsolete! (5f6d8a4bf34a)
+
+ $ echo "I am bar" > b
+ $ hg ci --amend -m "updated b"
+ 1 new content-divergent changesets
+
+ $ hg glog
+ @ 3:0e805383168e updated b
+ | draft content-divergent
+ |
+ | o 2:580f2d01e52c added b
+ |/ public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+
+Lets resolve the divergence:
+
+ $ hg evolve --content-divergent
+ merge:[2] added b
+ with: [3] updated b
+ base: [1] added b
+ merging b
+ warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
+ 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ echo "I am foobar" > b
+ $ hg resolve -m --tool union
+ (no more unresolved files)
+ continue: hg evolve --continue
+ $ hg evolve --continue
+ committed as 1a739394e9d4
+ working directory is now at 1a739394e9d4
+
+ $ hg glog
+ @ 5:1a739394e9d4 phase-divergent update to 580f2d01e52c:
+ | draft
+ |
+ o 2:580f2d01e52c added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+Testing when different parent, no conflict:
+-------------------------------------------
+
+ $ hg init pubdiv3
+ $ cd pubdiv3
+ $ for ch in a b c d; do
+ > echo $ch > $ch;
+ > hg ci -Aqm "added "$ch;
+ > done;
+
+ $ hg up .^
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo dd > d
+ $ hg add d
+ $ hg ci -m "added d"
+ created new head
+
+ $ hg up 1
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo dd > d
+ $ echo e > e
+ $ hg add d e
+ $ hg ci -m "added d e"
+ created new head
+
+ $ hg glog
+ @ 5:4291d72ee19a added d e
+ | draft
+ |
+ | o 4:93cd84bbdaca added d
+ | | draft
+ | |
+ | | o 3:9150fe93bec6 added d
+ | |/ draft
+ | |
+ | o 2:155349b645be added c
+ |/ draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+
+ $ hg prune 3 -s 5
+ 1 changesets pruned
+ $ hg prune 3 -s 4 --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+
+Change phase to public for one head:
+ $ hg phase -r 4 --public
+
+ $ hg glog
+ @ 5:4291d72ee19a added d e
+ | draft content-divergent
+ |
+ | o 4:93cd84bbdaca added d
+ | | public
+ | |
+ | o 2:155349b645be added c
+ |/ public
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+
+ $ hg evolve --content-divergent --any
+ merge:[4] added d
+ with: [5] added d e
+ base: [3] added d
+ rebasing "other" content-divergent changeset 4291d72ee19a on 155349b645be
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ committed as 4cbe48a0c3d9
+ working directory is now at 4cbe48a0c3d9
+
+ $ hg glog -l 1
+ @ 8:4cbe48a0c3d9 phase-divergent update to 93cd84bbdaca:
+ | draft
+ ~
+
+ $ hg evolve -l
+ $ cd ..
+
+Testing when different parents, relocation conflict:
+----------------------------------------------------
+
+ $ hg init pubdiv4
+ $ cd pubdiv4
+ $ for ch in a b c d; do
+ > echo $ch > $ch;
+ > hg ci -Aqm "added "$ch;
+ > done;
+
+ $ hg up .^^
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo d > d
+ $ echo cfoo > c
+ $ echo e > e
+ $ hg add d c e
+ $ hg ci -m "added d c e"
+ created new head
+
+ $ hg up 'desc("added c")'
+ 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo dd > d
+ $ hg add d
+ $ hg ci -m "added d"
+ created new head
+
+ $ hg glog
+ @ 5:93cd84bbdaca added d
+ | draft
+ |
+ | o 4:f31bcc378766 added d c e
+ | | draft
+ | |
+ +---o 3:9150fe93bec6 added d
+ | | draft
+ | |
+ o | 2:155349b645be added c
+ |/ draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+ $ hg prune 'min(desc("re:added d$"))' -s 'max(desc("re:added d$"))'
+ 1 changesets pruned
+ $ hg prune 'min(desc("re:added d$"))' -s 'desc("added d c e")' --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+
+Change phase to public for one head:
+ $ hg phase --public -r 'max(desc("re:added d$"))'
+
+ $ hg glog
+ @ 5:93cd84bbdaca added d
+ | public
+ |
+ | * 4:f31bcc378766 added d c e
+ | | draft content-divergent
+ | |
+ o | 2:155349b645be added c
+ |/ public
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ $ hg evolve --content-divergent --any --update
+ merge:[5] added d
+ with: [4] added d c e
+ base: [3] added d
+ rebasing "other" content-divergent changeset f31bcc378766 on 155349b645be
+ merging c
+ warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ hg diff
+ diff -r 155349b645be c
+ --- a/c Thu Jan 01 00:00:00 1970 +0000
+ +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,5 @@
+ +<<<<<<< destination: 155349b645be - test: added c
+ c
+ +=======
+ +cfoo
+ +>>>>>>> evolving: f31bcc378766 - test: added d c e
+ diff -r 155349b645be d
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +d
+ diff -r 155349b645be e
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/e Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +e
+
+ $ echo c > c
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ evolving 4:f31bcc378766 "added d c e"
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ committed as 412dde898967
+ working directory is now at 412dde898967
+ $ hg export
+ # HG changeset patch
+ # User test
+ # Date 0 0
+ # Thu Jan 01 00:00:00 1970 +0000
+ # Node ID 412dde898967b50e7d334aefff778a9af46d29d1
+ # Parent 93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
+ phase-divergent update to 93cd84bbdaca:
+
+ added d c e
+
+ diff -r 93cd84bbdaca -r 412dde898967 e
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/e Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +e
+
+ $ hg evolve -l
+ $ cd ..
+
+Testing when merging conflicts, relocation don't:
+-------------------------------------------------
+
+ $ hg init pubdiv5
+ $ cd pubdiv5
+ $ for ch in a b c d; do
+ > echo $ch > $ch;
+ > hg ci -Aqm "added "$ch;
+ > done;
+
+ $ hg up .^^
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo dconflict > d
+ $ hg add d
+ $ hg ci -m "added d"
+ created new head
+
+ $ hg up 2
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo dd > d
+ $ hg add d
+ $ hg ci -m "added d"
+ created new head
+
+ $ hg glog
+ @ 5:93cd84bbdaca added d
+ | draft
+ |
+ | o 4:9411ad1fe615 added d
+ | | draft
+ | |
+ +---o 3:9150fe93bec6 added d
+ | | draft
+ | |
+ o | 2:155349b645be added c
+ |/ draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+ $ hg prune 3 -s 5
+ 1 changesets pruned
+ $ hg prune 3 -s 4 --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+
+Change phase to public for one head:
+ $ hg phase --public -r 5
+
+ $ hg glog
+ @ 5:93cd84bbdaca added d
+ | public
+ |
+ | * 4:9411ad1fe615 added d
+ | | draft content-divergent
+ | |
+ o | 2:155349b645be added c
+ |/ public
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ $ hg evolve --content-divergent --any
+ merge:[5] added d
+ with: [4] added d
+ base: [3] added d
+ rebasing "other" content-divergent changeset 9411ad1fe615 on 155349b645be
+ merging d
+ warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
+ 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ echo d > d
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ committed as 2a0f44767904
+ working directory is now at 93cd84bbdaca
+
+ $ hg evolve -l
+ $ cd ..
+
+Testing when relocation, merging both conflict:
+-----------------------------------------------
+
+ $ hg init pubdiv6
+ $ cd pubdiv6
+ $ for ch in a b c d; do
+ > echo $ch > $ch;
+ > hg ci -Aqm "added "$ch;
+ > done;
+
+ $ hg up .^^
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo cfoo > c
+ $ echo e > e
+ $ echo dconflict > d
+ $ hg add c e d
+ $ hg ci -m "added c e"
+ created new head
+
+ $ hg up 2
+ 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo dd > d
+ $ hg add d
+ $ hg ci -m "added d"
+ created new head
+
+ $ hg glog
+ @ 5:93cd84bbdaca added d
+ | draft
+ |
+ | o 4:3c17c7afaf6e added c e
+ | | draft
+ | |
+ +---o 3:9150fe93bec6 added d
+ | | draft
+ | |
+ o | 2:155349b645be added c
+ |/ draft
+ |
+ o 1:5f6d8a4bf34a added b
+ | draft
+ |
+ o 0:9092f1db7931 added a
+ draft
+
+ $ hg prune 3 -s 5
+ 1 changesets pruned
+ $ hg prune 3 -s 4 --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+
+Change phase to public for one head:
+ $ hg phase --public -r 5
+
+ $ hg glog
+ @ 5:93cd84bbdaca added d
+ | public
+ |
+ | * 4:3c17c7afaf6e added c e
+ | | draft content-divergent
+ | |
+ o | 2:155349b645be added c
+ |/ public
+ |
+ o 1:5f6d8a4bf34a added b
+ | public
+ |
+ o 0:9092f1db7931 added a
+ public
+
+ $ hg evolve --content-divergent --any
+ merge:[5] added d
+ with: [4] added c e
+ base: [3] added d
+ rebasing "other" content-divergent changeset 3c17c7afaf6e on 155349b645be
+ merging c
+ warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ hg diff
+ diff -r 155349b645be c
+ --- a/c Thu Jan 01 00:00:00 1970 +0000
+ +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,5 @@
+ +<<<<<<< destination: 155349b645be - test: added c
+ c
+ +=======
+ +cfoo
+ +>>>>>>> evolving: 3c17c7afaf6e - test: added c e
+ diff -r 155349b645be d
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +dconflict
+ diff -r 155349b645be e
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/e Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +e
+
+ $ echo cfoo > c
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ evolving 4:3c17c7afaf6e "added c e"
+ merging d
+ warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
+ 2 files updated, 0 files merged, 0 files removed, 1 files unresolved
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ echo d > d
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ committed as b9082a9e66ce
+ working directory is now at 93cd84bbdaca
+
+ $ hg evolve -l
+ $ cd ..
--- a/tests/test-evolve-public-content-divergent.t Sat Jun 01 02:30:14 2019 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2017 +0,0 @@
-Test for handling of content divergence with public cset using `hg evolve`
-==========================================================================
-
-Setup
-=====
- $ cat >> $HGRCPATH <<EOF
- > [alias]
- > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n"
- > [phases]
- > publish = False
- > [extensions]
- > rebase =
- > EOF
- $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
-
-Testing the case when both divergent cset are on the same parent and no-conflict in merging:
--------------------------------------------------------------------------------------
-
-Prepare the repository:
-
- $ hg init pubdiv
- $ cd pubdiv
- $ for ch in a b; do
- > echo $ch > $ch;
- > hg ci -Aqm "added "$ch;
- > done;
- $ hg glog
- @ 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
-Make an amend and change phase to public:
-
- $ sed -i "1 i I am first" b
- $ hg amend
- $ hg phase --public
-
-Amend again to create a cset divergent to public one:
-
- $ hg up 1 --hidden -q
- updated to hidden changeset 5f6d8a4bf34a
- (hidden revision '5f6d8a4bf34a' was rewritten as: 44f360db368f)
- working directory parent is obsolete! (5f6d8a4bf34a)
-
- $ echo "I am second" >> b
- $ hg ci --amend -m "updated b"
- 1 new content-divergent changesets
-
- $ hg glog
- @ 3:dcdaf152280a updated b
- | draft content-divergent
- |
- | o 2:44f360db368f added b
- |/ public
- |
- o 0:9092f1db7931 added a
- public
-
-
-Lets resolve the public content-divergence:
-
- $ hg evolve --content-divergent
- merge:[2] added b
- with: [3] updated b
- base: [1] added b
- updating to "local" side of the conflict: 44f360db368f
- merging "other" content-divergent changeset 'dcdaf152280a'
- merging b
- 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
- committed as c1aa9cfb6cf8
- working directory is now at c1aa9cfb6cf8
-
-Following graph log shows that it correctly merged the two divergent csets:
-
- $ hg glog -p
- @ 5:c1aa9cfb6cf8 phase-divergent update to 44f360db368f:
- | draft
- |
- | diff -r 44f360db368f -r c1aa9cfb6cf8 b
- | --- a/b Thu Jan 01 00:00:00 1970 +0000
- | +++ b/b Thu Jan 01 00:00:00 1970 +0000
- | @@ -1,2 +1,3 @@
- | I am first
- | b
- | +I am second
- |
- o 2:44f360db368f added b
- | public
- |
- | diff -r 9092f1db7931 -r 44f360db368f b
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/b Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,2 @@
- | +I am first
- | +b
- |
- o 0:9092f1db7931 added a
- public
-
- diff -r 000000000000 -r 9092f1db7931 a
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/a Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +a
-
- $ hg evolve -l
-
- $ cd ..
-
-Testing the case when both divergent cset has same parent and has conflict in merging:
-------------------------------------------------------------------------------
-
-Prepare the repository:
-
- $ hg init pubdiv1
- $ cd pubdiv1
- $ for ch in a b; do
- > echo $ch > $ch;
- > hg ci -Aqm "added "$ch;
- > done;
- $ hg glog
- @ 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
-Make an amend and change phase to public:
-
- $ echo "I am foo" > b
- $ hg amend
- $ hg phase --public
-
-Amend again to create a cset divergent to public one:
-
- $ hg up 1 --hidden -q
- updated to hidden changeset 5f6d8a4bf34a
- (hidden revision '5f6d8a4bf34a' was rewritten as: 580f2d01e52c)
- working directory parent is obsolete! (5f6d8a4bf34a)
-
- $ echo "I am bar" > b
- $ hg ci --amend -m "updated b"
- 1 new content-divergent changesets
-
- $ hg glog
- @ 3:0e805383168e updated b
- | draft content-divergent
- |
- | o 2:580f2d01e52c added b
- |/ public
- |
- o 0:9092f1db7931 added a
- public
-
-
-Lets resolve the divergence:
-
- $ hg evolve --content-divergent
- merge:[2] added b
- with: [3] updated b
- base: [1] added b
- updating to "local" side of the conflict: 580f2d01e52c
- merging "other" content-divergent changeset '0e805383168e'
- merging b
- warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
- 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ echo "I am foobar" > b
- $ hg resolve -m --tool union
- (no more unresolved files)
- continue: hg evolve --continue
- $ hg evolve --continue
- committed as 1a739394e9d4
- working directory is now at 1a739394e9d4
-
- $ hg glog
- @ 5:1a739394e9d4 phase-divergent update to 580f2d01e52c:
- | draft
- |
- o 2:580f2d01e52c added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
-Testing the case when divergence is not created by actual diff change, but because of rebasing:
-------------------------------------------------------------------------------------------------
-
-Prepare the repo:
-
- $ cd ..
- $ hg init rebasediv
- $ cd rebasediv
- $ for ch in a b c; do
- > echo $ch > $ch;
- > hg ci -Am "added "$ch;
- > done;
- adding a
- adding b
- adding c
-
- $ hg glog
- @ 2:155349b645be added c
- | draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
-On server side: a new cset is added based on rev 1 and rev 2 is rebased on newly added cset:
-
- $ hg up .^ -q
- $ echo d > d
- $ hg ci -Am "added d"
- adding d
- created new head
-
- $ hg rebase -r 2 -d .
- rebasing 2:155349b645be "added c"
-
- $ hg glog
- o 4:c0d7ee6604ea added c
- | draft
- |
- @ 3:c9241b0f2d5b added d
- | draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
-On user side: user has not pulled yet and amended the rev 2 which created the divergence after pull:
- $ hg up 2 --hidden -q
- updated to hidden changeset 155349b645be
- (hidden revision '155349b645be' was rewritten as: c0d7ee6604ea)
- working directory parent is obsolete! (155349b645be)
-
- $ echo cc >> c
- $ hg ci --amend -m "updated c"
- 2 new content-divergent changesets
-
-Lets change the phase to --public of branch which is pulled from server:
- $ hg phase --public -r 4
- $ hg glog -p
- @ 5:f5f9b4fc8b77 updated c
- | draft content-divergent
- |
- | diff -r 5f6d8a4bf34a -r f5f9b4fc8b77 c
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,2 @@
- | +c
- | +cc
- |
- | o 4:c0d7ee6604ea added c
- | | public
- | |
- | | diff -r c9241b0f2d5b -r c0d7ee6604ea c
- | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | | +++ b/c Thu Jan 01 00:00:00 1970 +0000
- | | @@ -0,0 +1,1 @@
- | | +c
- | |
- | o 3:c9241b0f2d5b added d
- |/ public
- |
- | diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/d Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +d
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- | diff -r 9092f1db7931 -r 5f6d8a4bf34a b
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/b Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +b
- |
- o 0:9092f1db7931 added a
- public
-
- diff -r 000000000000 -r 9092f1db7931 a
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/a Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +a
-
-
-Evolve:
- $ hg evolve --content-divergent
- merge:[4] added c
- with: [5] updated c
- base: [2] added c
- rebasing "other" content-divergent changeset f5f9b4fc8b77 on c9241b0f2d5b
- updating to "local" side of the conflict: c0d7ee6604ea
- merging "other" content-divergent changeset 'c3d442d80993'
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- committed as 3b336cbee992
- working directory is now at 3b336cbee992
-
- $ hg glog -p
- @ 8:3b336cbee992 phase-divergent update to c0d7ee6604ea:
- | draft
- |
- | diff -r c0d7ee6604ea -r 3b336cbee992 c
- | --- a/c Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c Thu Jan 01 00:00:00 1970 +0000
- | @@ -1,1 +1,2 @@
- | c
- | +cc
- |
- o 4:c0d7ee6604ea added c
- | public
- |
- | diff -r c9241b0f2d5b -r c0d7ee6604ea c
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c
- |
- o 3:c9241b0f2d5b added d
- | public
- |
- | diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/d Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +d
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- | diff -r 9092f1db7931 -r 5f6d8a4bf34a b
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/b Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +b
- |
- o 0:9092f1db7931 added a
- public
-
- diff -r 000000000000 -r 9092f1db7931 a
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/a Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +a
-
-Check that we don't have any unstable cset now:
- $ hg evolve -l
- $ cd ..
-
-Testing the case when csets are on different parent and no conflict in relocation and merging:
-----------------------------------------------------------------------------------------------
-
- $ hg init pubdiv2
- $ cd pubdiv2
- $ for ch in a b c d; do
- > echo $ch > $ch;
- > hg ci -Aqm "added "$ch;
- > done;
-
- $ hg up .^
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo dd > d
- $ hg add d
- $ hg ci -m "added d"
- created new head
-
- $ hg up 1
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo dd > d
- $ echo e > e
- $ hg add d e
- $ hg ci -m "added d e"
- created new head
-
- $ hg glog
- @ 5:4291d72ee19a added d e
- | draft
- |
- | o 4:93cd84bbdaca added d
- | | draft
- | |
- | | o 3:9150fe93bec6 added d
- | |/ draft
- | |
- | o 2:155349b645be added c
- |/ draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
- $ hg prune 3 -s 5
- 1 changesets pruned
- $ hg prune 3 -s 4 --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
-
-Change phase to public for one head:
- $ hg phase -r 4 --public
-
- $ hg glog
- @ 5:4291d72ee19a added d e
- | draft content-divergent
- |
- | o 4:93cd84bbdaca added d
- | | public
- | |
- | o 2:155349b645be added c
- |/ public
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
-
- $ hg evolve --content-divergent --any
- merge:[4] added d
- with: [5] added d e
- base: [3] added d
- rebasing "other" content-divergent changeset 4291d72ee19a on 155349b645be
- updating to "local" side of the conflict: 93cd84bbdaca
- merging "other" content-divergent changeset 'f88581407163'
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- committed as 4cbe48a0c3d9
- working directory is now at 4cbe48a0c3d9
-
- $ hg glog -l 1
- @ 8:4cbe48a0c3d9 phase-divergent update to 93cd84bbdaca:
- | draft
- ~
-
- $ hg evolve -l
- $ cd ..
-
-Different parents, relocation conflict
---------------------------------------
-
-Testing the case when csets are on different parent and conflict in relocation
-but not in merging.
-
- $ hg init pubdiv3
- $ cd pubdiv3
- $ for ch in a b c d; do
- > echo $ch > $ch;
- > hg ci -Aqm "added "$ch;
- > done;
-
- $ hg up .^^
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo d > d
- $ echo cfoo > c
- $ echo e > e
- $ hg add d c e
- $ hg ci -m "added d c e"
- created new head
-
- $ hg up 'desc("added c")'
- 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo dd > d
- $ hg add d
- $ hg ci -m "added d"
- created new head
-
- $ hg glog
- @ 5:93cd84bbdaca added d
- | draft
- |
- | o 4:f31bcc378766 added d c e
- | | draft
- | |
- +---o 3:9150fe93bec6 added d
- | | draft
- | |
- o | 2:155349b645be added c
- |/ draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
- $ hg prune 'min(desc("re:added d$"))' -s 'max(desc("re:added d$"))'
- 1 changesets pruned
- $ hg prune 'min(desc("re:added d$"))' -s 'desc("added d c e")' --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
-
-Change phase to public for one head:
- $ hg phase --public -r 'max(desc("re:added d$"))'
-
- $ hg glog
- @ 5:93cd84bbdaca added d
- | public
- |
- | * 4:f31bcc378766 added d c e
- | | draft content-divergent
- | |
- o | 2:155349b645be added c
- |/ public
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
- $ hg evolve --content-divergent --any
- merge:[5] added d
- with: [4] added d c e
- base: [3] added d
- rebasing "other" content-divergent changeset f31bcc378766 on 155349b645be
- merging c
- warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ hg diff
- diff -r 155349b645be c
- --- a/c Thu Jan 01 00:00:00 1970 +0000
- +++ b/c Thu Jan 01 00:00:00 1970 +0000
- @@ -1,1 +1,5 @@
- +<<<<<<< destination: 155349b645be - test: added c
- c
- +=======
- +cfoo
- +>>>>>>> evolving: f31bcc378766 - test: added d c e
- diff -r 155349b645be d
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/d Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +d
- diff -r 155349b645be e
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/e Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +e
-
- $ echo c > c
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- evolving 4:f31bcc378766 "added d c e"
- updating to "local" side of the conflict: 93cd84bbdaca
- merging "other" content-divergent changeset 'bd28d3e4a228'
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- committed as 412dde898967
- working directory is now at 412dde898967
- $ hg export
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID 412dde898967b50e7d334aefff778a9af46d29d1
- # Parent 93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
- phase-divergent update to 93cd84bbdaca:
-
- added d c e
-
- diff -r 93cd84bbdaca -r 412dde898967 e
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/e Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +e
-
- $ hg evolve -l
- $ cd ..
-
-Testing the case when merging leads to conflicts but relocation won't:
----------------------------------------------------------------------
-
- $ hg init pubdiv3.5
- $ cd pubdiv3.5
- $ for ch in a b c d; do
- > echo $ch > $ch;
- > hg ci -Aqm "added "$ch;
- > done;
-
- $ hg up .^^
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo dconflict > d
- $ hg add d
- $ hg ci -m "added d"
- created new head
-
- $ hg up 2
- 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo dd > d
- $ hg add d
- $ hg ci -m "added d"
- created new head
-
- $ hg glog
- @ 5:93cd84bbdaca added d
- | draft
- |
- | o 4:9411ad1fe615 added d
- | | draft
- | |
- +---o 3:9150fe93bec6 added d
- | | draft
- | |
- o | 2:155349b645be added c
- |/ draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
- $ hg prune 3 -s 5
- 1 changesets pruned
- $ hg prune 3 -s 4 --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
-
-Change phase to public for one head:
- $ hg phase --public -r 5
-
- $ hg glog
- @ 5:93cd84bbdaca added d
- | public
- |
- | * 4:9411ad1fe615 added d
- | | draft content-divergent
- | |
- o | 2:155349b645be added c
- |/ public
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
- $ hg evolve --content-divergent --any
- merge:[5] added d
- with: [4] added d
- base: [3] added d
- rebasing "other" content-divergent changeset 9411ad1fe615 on 155349b645be
- updating to "local" side of the conflict: 93cd84bbdaca
- merging "other" content-divergent changeset 'b5c690cdf1d5'
- merging d
- warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
- 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ echo d > d
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- committed as 2a0f44767904
- working directory is now at 2a0f44767904
-
- $ hg evolve -l
- $ cd ..
-
-Testing the case when relocation and merging both leads to conflicts:
---------------------------------------------------------------------
-
- $ hg init pubdiv4
- $ cd pubdiv4
- $ for ch in a b c d; do
- > echo $ch > $ch;
- > hg ci -Aqm "added "$ch;
- > done;
-
- $ hg up .^^
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo cfoo > c
- $ echo e > e
- $ echo dconflict > d
- $ hg add c e d
- $ hg ci -m "added c e"
- created new head
-
- $ hg up 2
- 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo dd > d
- $ hg add d
- $ hg ci -m "added d"
- created new head
-
- $ hg glog
- @ 5:93cd84bbdaca added d
- | draft
- |
- | o 4:3c17c7afaf6e added c e
- | | draft
- | |
- +---o 3:9150fe93bec6 added d
- | | draft
- | |
- o | 2:155349b645be added c
- |/ draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
- $ hg prune 3 -s 5
- 1 changesets pruned
- $ hg prune 3 -s 4 --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
-
-Change phase to public for one head:
- $ hg phase --public -r 5
-
- $ hg glog
- @ 5:93cd84bbdaca added d
- | public
- |
- | * 4:3c17c7afaf6e added c e
- | | draft content-divergent
- | |
- o | 2:155349b645be added c
- |/ public
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
- $ hg evolve --content-divergent --any
- merge:[5] added d
- with: [4] added c e
- base: [3] added d
- rebasing "other" content-divergent changeset 3c17c7afaf6e on 155349b645be
- merging c
- warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ hg diff
- diff -r 155349b645be c
- --- a/c Thu Jan 01 00:00:00 1970 +0000
- +++ b/c Thu Jan 01 00:00:00 1970 +0000
- @@ -1,1 +1,5 @@
- +<<<<<<< destination: 155349b645be - test: added c
- c
- +=======
- +cfoo
- +>>>>>>> evolving: 3c17c7afaf6e - test: added c e
- diff -r 155349b645be d
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/d Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +dconflict
- diff -r 155349b645be e
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/e Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +e
-
- $ echo cfoo > c
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- evolving 4:3c17c7afaf6e "added c e"
- updating to "local" side of the conflict: 93cd84bbdaca
- merging "other" content-divergent changeset 'c4ce3d34e784'
- merging d
- warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
- 2 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ echo d > d
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- committed as b9082a9e66ce
- working directory is now at b9082a9e66ce
-
- $ hg evolve -l
- $ cd ..
-
-Different parent, simple conflict on relocate, deleted file on actual merge
----------------------------------------------------------------------------
-
-Changeset "added c e" is also removing 'd'. This should conflict with the update
-to 'd' in the successors of 'adding d' when solving the content divergence.
-
- $ hg init pubdiv-parent-deleted-file
- $ cd pubdiv-parent-deleted-file
- $ for ch in a b c d; do
- > echo $ch > $ch;
- > hg ci -Aqm "added "$ch;
- > done;
-
- $ hg up 'desc("added b")'
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo cfoo > c
- $ echo e > e
- $ hg add c e
- $ hg ci -m "added c e"
- created new head
-
- $ hg up 'desc("re:added c$")'
- 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo dd > d
- $ hg add d
- $ hg ci -m "added d"
- created new head
-
- $ hg glog --patch --rev 'sort(all(), "topo")'
- @ 5:93cd84bbdaca added d
- | draft
- |
- | diff -r 155349b645be -r 93cd84bbdaca d
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/d Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +dd
- |
- | o 3:9150fe93bec6 added d
- |/ draft
- |
- | diff -r 155349b645be -r 9150fe93bec6 d
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/d Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +d
- |
- o 2:155349b645be added c
- | draft
- |
- | diff -r 5f6d8a4bf34a -r 155349b645be c
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c
- |
- | o 4:e568fd1029bb added c e
- |/ draft
- |
- | diff -r 5f6d8a4bf34a -r e568fd1029bb c
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +cfoo
- | diff -r 5f6d8a4bf34a -r e568fd1029bb e
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/e Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +e
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- | diff -r 9092f1db7931 -r 5f6d8a4bf34a b
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/b Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +b
- |
- o 0:9092f1db7931 added a
- draft
-
- diff -r 000000000000 -r 9092f1db7931 a
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/a Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +a
-
- $ hg prune 'min(desc("added d"))' -s 'max(desc("added d"))'
- 1 changesets pruned
- $ hg prune 'min(desc("added d"))' -s 'desc("added c e")' --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
-
-Change phase to public for one head:
- $ hg phase --public -r 'max(desc("added d"))'
-
- $ hg glog
- @ 5:93cd84bbdaca added d
- | public
- |
- | * 4:e568fd1029bb added c e
- | | draft content-divergent
- | |
- o | 2:155349b645be added c
- |/ public
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
-
- $ hg glog --patch --rev 'sort(all(), "topo")' --hidden
- @ 5:93cd84bbdaca added d
- | public
- |
- | diff -r 155349b645be -r 93cd84bbdaca d
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/d Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +dd
- |
- | x 3:9150fe93bec6 added d
- |/ draft
- |
- | diff -r 155349b645be -r 9150fe93bec6 d
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/d Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +d
- |
- o 2:155349b645be added c
- | public
- |
- | diff -r 5f6d8a4bf34a -r 155349b645be c
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c
- |
- | * 4:e568fd1029bb added c e
- |/ draft content-divergent
- |
- | diff -r 5f6d8a4bf34a -r e568fd1029bb c
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +cfoo
- | diff -r 5f6d8a4bf34a -r e568fd1029bb e
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/e Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +e
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- | diff -r 9092f1db7931 -r 5f6d8a4bf34a b
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/b Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +b
- |
- o 0:9092f1db7931 added a
- public
-
- diff -r 000000000000 -r 9092f1db7931 a
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/a Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +a
-
-
- $ hg obslog --all --rev tip --patch
- @ 93cd84bbdaca (5) added d
- |
- | * e568fd1029bb (4) added c e
- |/
- x 9150fe93bec6 (3) added d
- rewritten(content) as 93cd84bbdaca using prune by test (Thu Jan 01 00:00:00 1970 +0000)
- diff -r 9150fe93bec6 -r 93cd84bbdaca d
- --- a/d Thu Jan 01 00:00:00 1970 +0000
- +++ b/d Thu Jan 01 00:00:00 1970 +0000
- @@ -1,1 +1,1 @@
- -d
- +dd
-
- rewritten(description, parent, content) as e568fd1029bb using prune by test (Thu Jan 01 00:00:00 1970 +0000)
- (No patch available, changesets rebased)
-
-
- $ hg evolve --content-divergent --any
- merge:[5] added d
- with: [4] added c e
- base: [3] added d
- rebasing "other" content-divergent changeset e568fd1029bb on 155349b645be
- merging c
- warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ hg diff
- diff -r 155349b645be c
- --- a/c Thu Jan 01 00:00:00 1970 +0000
- +++ b/c Thu Jan 01 00:00:00 1970 +0000
- @@ -1,1 +1,5 @@
- +<<<<<<< destination: 155349b645be - test: added c
- c
- +=======
- +cfoo
- +>>>>>>> evolving: e568fd1029bb - test: added c e
- diff -r 155349b645be e
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/e Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +e
-
- $ echo c > c
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- evolving 4:e568fd1029bb "added c e"
- updating to "local" side of the conflict: 93cd84bbdaca
- merging "other" content-divergent changeset '2af3359250d3'
- file 'd' was deleted in other but was modified in local.
- What do you want to do?
- use (c)hanged version, (d)elete, or leave (u)nresolved? u
- 1 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ hg sum
- parent: 5:93cd84bbdaca
- added d
- parent: 6:2af3359250d3 tip (content-divergent)
- added c e
- branch: default
- commit: 1 modified, 1 unknown, 1 unresolved (merge)
- update: (current)
- phases: 1 draft
- content-divergent: 1 changesets
- evolve: (evolve --continue)
-
- $ echo resolved > d
- $ hg resolve -m d
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- committed as bc1f4610744c
- working directory is now at bc1f4610744c
-
- $ hg export
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID bc1f4610744c6aa0e851d3876a61bfff6243b31c
- # Parent 93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
- phase-divergent update to 93cd84bbdaca:
-
- added c e
-
- diff -r 93cd84bbdaca -r bc1f4610744c d
- --- a/d Thu Jan 01 00:00:00 1970 +0000
- +++ b/d Thu Jan 01 00:00:00 1970 +0000
- @@ -1,1 +1,1 @@
- -dd
- +resolved
- diff -r 93cd84bbdaca -r bc1f4610744c e
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/e Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +e
-
- $ hg evolve -l
- $ cd ..
-
-Testing the case when "merging results in same as public cset" where:
-both the csets are on same parent and no conflict in merging.
----------------------------------------------------------------------
-
-Prepare the repo:
-
- $ hg init pubdiv5
- $ cd pubdiv5
- $ for ch in a b c; do
- > echo $ch > $ch;
- > hg ci -Am "added "$ch;
- > done;
- adding a
- adding b
- adding c
-
- $ hg up .^
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo ch > ch
- $ hg add ch
- $ hg ci -m "added ch"
- created new head
-
- $ hg up .^
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo ch > ch
- $ hg add ch
- $ hg ci -m "added c"
- created new head
-
- $ hg glog
- @ 4:f7c1071f1e7c added c
- | draft
- |
- | o 3:90522bccf499 added ch
- |/ draft
- |
- | o 2:155349b645be added c
- |/ draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
- $ hg prune 2 -s 3
- 1 changesets pruned
- $ hg prune 2 -s 4 --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
- $ hg phase --public -r 4
-
- $ hg glog
- @ 4:f7c1071f1e7c added c
- | public
- |
- | * 3:90522bccf499 added ch
- |/ draft content-divergent
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
- $ hg evolve --content-divergent --any
- merge:[4] added c
- with: [3] added ch
- base: [2] added c
- merging "other" content-divergent changeset '90522bccf499'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- content-divergent changesets differ by descriptions only, discarding 90522bccf499
-
- $ hg evolve -l
-
- $ hg par
- changeset: 4:f7c1071f1e7c
- tag: tip
- parent: 1:5f6d8a4bf34a
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: added c
-
-
-Testing the case when "merging results in same as public cset" where:
-both the csets are on different parent and no conflict in merging and relocation.
----------------------------------------------------------------------------------
-
-Prepare the repo:
-
- $ cd ..
- $ hg init pubdiv6
- $ cd pubdiv6
- $ for ch in a b c d; do
- > echo $ch > $ch;
- > hg ci -Am "added "$ch;
- > done;
- adding a
- adding b
- adding c
- adding d
-
- $ hg up 1
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo dh > dh
- $ hg add dh
- $ hg ci -m "added dh"
- created new head
-
- $ hg up 2
- 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo dh > dh
- $ hg add dh
- $ hg ci -m "added d"
- created new head
-
- $ hg glog
- @ 5:e800202333a4 added d
- | draft
- |
- | o 4:5acd58ef5066 added dh
- | | draft
- | |
- +---o 3:9150fe93bec6 added d
- | | draft
- | |
- o | 2:155349b645be added c
- |/ draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
- $ hg prune 3 -s 4
- 1 changesets pruned
- $ hg prune 3 -s 5 --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
- $ hg phase --public -r 5
-
- $ hg glog
- @ 5:e800202333a4 added d
- | public
- |
- | * 4:5acd58ef5066 added dh
- | | draft content-divergent
- | |
- o | 2:155349b645be added c
- |/ public
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
- $ hg evolve --content-divergent --any
- merge:[5] added d
- with: [4] added dh
- base: [3] added d
- rebasing "other" content-divergent changeset 5acd58ef5066 on 155349b645be
- updating to "local" side of the conflict: e800202333a4
- merging "other" content-divergent changeset 'ae3429430ef1'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- content-divergent changesets differ by descriptions only, discarding ae3429430ef1
-
- $ hg evolve -l
-
- $ hg par
- changeset: 5:e800202333a4
- tag: tip
- parent: 2:155349b645be
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: added d
-
-Testing the case when "merging results in same as public cset" where:
-both the csets are on same parent and merging leads to conflict.
----------------------------------------------------------------------
-
-Prepare the repo:
-
- $ cd ..
- $ hg init pubdiv7
- $ cd pubdiv7
- $ for ch in a b c; do
- > echo $ch > $ch;
- > hg ci -Am "added "$ch;
- > done;
- adding a
- adding b
- adding c
-
- $ hg up .^
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo chconflict > ch
- $ hg add ch
- $ hg ci -m "added ch"
- created new head
-
- $ hg up .^
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo ch > ch
- $ hg add ch
- $ hg ci -m "added c"
- created new head
-
- $ hg glog
- @ 4:f7c1071f1e7c added c
- | draft
- |
- | o 3:229da2719b19 added ch
- |/ draft
- |
- | o 2:155349b645be added c
- |/ draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
- $ hg prune 2 -s 3
- 1 changesets pruned
- $ hg prune 2 -s 4 --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
- $ hg phase --public -r 4
-
- $ hg glog
- @ 4:f7c1071f1e7c added c
- | public
- |
- | * 3:229da2719b19 added ch
- |/ draft content-divergent
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
- $ hg evolve --content-divergent --any
- merge:[4] added c
- with: [3] added ch
- base: [2] added c
- merging "other" content-divergent changeset '229da2719b19'
- merging ch
- warning: conflicts while merging ch! (edit, then use 'hg resolve --mark')
- 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ hg diff
- diff -r f7c1071f1e7c ch
- --- a/ch Thu Jan 01 00:00:00 1970 +0000
- +++ b/ch Thu Jan 01 00:00:00 1970 +0000
- @@ -1,1 +1,5 @@
- +<<<<<<< local: f7c1071f1e7c - test: added c
- ch
- +=======
- +chconflict
- +>>>>>>> other: 229da2719b19 - test: added ch
-
- $ echo ch > ch
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- content-divergent changesets differ by descriptions only, discarding 229da2719b19
- working directory is now at f7c1071f1e7c
-
- $ hg evolve -l
-
- $ hg par
- changeset: 4:f7c1071f1e7c
- tag: tip
- parent: 1:5f6d8a4bf34a
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: added c
-
-Testing the case when "merging results in same as public cset" where:
-both the csets are on different parent and relocation leads to conflict but merging won't.
-------------------------------------------------------------------------------------------
-Prepare the repo:
-
- $ cd ..
- $ hg init pubdiv8
- $ cd pubdiv8
- $ for ch in a b c d; do
- > echo $ch > $ch;
- > hg ci -Am "added "$ch;
- > done;
- adding a
- adding b
- adding c
- adding d
-
- $ hg up 1
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo dh > dh
- $ echo cc > c
- $ hg add dh c
- $ hg ci -m "added dh"
- created new head
-
- $ hg up 2
- 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo dh > dh
- $ hg add dh
- $ hg ci -m "added d"
- created new head
-
- $ hg glog
- @ 5:e800202333a4 added d
- | draft
- |
- | o 4:f89a8e2f86ac added dh
- | | draft
- | |
- +---o 3:9150fe93bec6 added d
- | | draft
- | |
- o | 2:155349b645be added c
- |/ draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
- $ hg prune 3 -s 4
- 1 changesets pruned
- $ hg prune 3 -s 5 --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
- $ hg phase --public -r 5
-
- $ hg glog
- @ 5:e800202333a4 added d
- | public
- |
- | * 4:f89a8e2f86ac added dh
- | | draft content-divergent
- | |
- o | 2:155349b645be added c
- |/ public
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
- $ hg evolve --content-divergent --any
- merge:[5] added d
- with: [4] added dh
- base: [3] added d
- rebasing "other" content-divergent changeset f89a8e2f86ac on 155349b645be
- merging c
- warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ echo c > c
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- evolving 4:f89a8e2f86ac "added dh"
- updating to "local" side of the conflict: e800202333a4
- merging "other" content-divergent changeset 'bc309da55b88'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- content-divergent changesets differ by descriptions only, discarding bc309da55b88
- working directory is now at e800202333a4
-
- $ hg evolve -l
-
- $ hg par
- changeset: 5:e800202333a4
- tag: tip
- parent: 2:155349b645be
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: added d
-
-Testing the case when "merging results in same as public cset" where:
-both the csets are on different parent and merging leads to conflict but relocation won't.
-------------------------------------------------------------------------------------------
-Prepare the repo:
-
- $ cd ..
- $ hg init pubdiv9
- $ cd pubdiv9
- $ for ch in a b c d; do
- > echo $ch > $ch;
- > hg ci -Am "added "$ch;
- > done;
- adding a
- adding b
- adding c
- adding d
-
- $ hg up 1
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo dhconflict > dh
- $ hg add dh
- $ hg ci -m "added dh"
- created new head
-
- $ hg up 2
- 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo dh > dh
- $ hg add dh
- $ hg ci -m "added d"
- created new head
-
- $ hg glog
- @ 5:e800202333a4 added d
- | draft
- |
- | o 4:db0b7bba0aae added dh
- | | draft
- | |
- +---o 3:9150fe93bec6 added d
- | | draft
- | |
- o | 2:155349b645be added c
- |/ draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
- $ hg prune 3 -s 4
- 1 changesets pruned
- $ hg prune 3 -s 5 --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
- $ hg phase --public -r 5
-
- $ hg glog
- @ 5:e800202333a4 added d
- | public
- |
- | * 4:db0b7bba0aae added dh
- | | draft content-divergent
- | |
- o | 2:155349b645be added c
- |/ public
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
- $ hg evolve --content-divergent --any
- merge:[5] added d
- with: [4] added dh
- base: [3] added d
- rebasing "other" content-divergent changeset db0b7bba0aae on 155349b645be
- updating to "local" side of the conflict: e800202333a4
- merging "other" content-divergent changeset 'a5bbf2042450'
- merging dh
- warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
- 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ echo dh > dh
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- content-divergent changesets differ by descriptions only, discarding a5bbf2042450
- working directory is now at e800202333a4
-
- $ hg evolve -l
-
- $ hg par
- changeset: 5:e800202333a4
- tag: tip
- parent: 2:155349b645be
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: added d
-
-
-Testing the case when "merging results in same as public cset" where:
-both the csets are on different parent and relocation and merging both leads to conflict:
------------------------------------------------------------------------------------------
-Prepare the repo:
-
- $ cd ..
- $ hg init pubdiv10
- $ cd pubdiv10
- $ for ch in a b c d; do
- > echo $ch > $ch;
- > hg ci -Am "added "$ch;
- > done;
- adding a
- adding b
- adding c
- adding d
-
- $ hg up 1
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo dhconflict > dh
- $ echo cc > c
- $ hg add dh c
- $ hg ci -m "added dh"
- created new head
-
- $ hg up 2
- 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo dh > dh
- $ hg add dh
- $ hg ci -m "added d"
- created new head
-
- $ hg glog
- @ 5:e800202333a4 added d
- | draft
- |
- | o 4:67b19bbd770f added dh
- | | draft
- | |
- +---o 3:9150fe93bec6 added d
- | | draft
- | |
- o | 2:155349b645be added c
- |/ draft
- |
- o 1:5f6d8a4bf34a added b
- | draft
- |
- o 0:9092f1db7931 added a
- draft
-
-
- $ hg prune 3 -s 4
- 1 changesets pruned
- $ hg prune 3 -s 5 --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
- $ hg phase --public -r 5
-
- $ hg glog
- @ 5:e800202333a4 added d
- | public
- |
- | * 4:67b19bbd770f added dh
- | | draft content-divergent
- | |
- o | 2:155349b645be added c
- |/ public
- |
- o 1:5f6d8a4bf34a added b
- | public
- |
- o 0:9092f1db7931 added a
- public
-
- $ hg evolve --content-divergent --any
- merge:[5] added d
- with: [4] added dh
- base: [3] added d
- rebasing "other" content-divergent changeset 67b19bbd770f on 155349b645be
- merging c
- warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ echo c > c
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- evolving 4:67b19bbd770f "added dh"
- updating to "local" side of the conflict: e800202333a4
- merging "other" content-divergent changeset '09054d1f3c97'
- merging dh
- warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
- 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ echo dh > dh
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- content-divergent changesets differ by descriptions only, discarding 09054d1f3c97
- working directory is now at e800202333a4
-
- $ hg evolve -l
-
- $ hg par
- changeset: 5:e800202333a4
- tag: tip
- parent: 2:155349b645be
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: added d
-
-
- $ cd ..
-
-Test a pratical "rebase" case
-=============================
-
-Initial setup
-
- $ hg init rebase-divergence
- $ cd rebase-divergence
- $ echo root >> root
- $ hg add root
- $ hg commit -m root
- $ for x in c_A c_B c_C c_D; do
- > echo $x >> $x
- > hg add $x
- > hg commit -m $x
- > done
-
- $ hg up 'desc("c_A")'
- 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
-
- $ for x in c_E c_F; do
- > echo $x >> $x
- > hg add $x
- > hg commit -m $x
- > done
- created new head
-
-(creating divergence locally for simplicity)
-
- $ node=`hg log --rev 'desc("c_E")' -T '{node}'`
- $ hg rebase -s $node -d 'desc("c_B")'
- rebasing 5:4ab2719bbab9 "c_E"
- rebasing 6:77ccbf8d837e "c_F" (tip)
- $ hg phase --public tip
- $ hg rebase --hidden -s $node -d 'desc("c_C")' --config experimental.evolution.allowdivergence=yes
- rebasing 5:4ab2719bbab9 "c_E"
- rebasing 6:77ccbf8d837e "c_F"
- 2 new content-divergent changesets
-
- $ hg sum
- parent: 8:a52ac76b45f5
- c_F
- branch: default
- commit: (clean)
- update: 4 new changesets, 3 branch heads (merge)
- phases: 4 draft
- content-divergent: 2 changesets
- $ hg evolve --list
- b4a584aea4bd: c_E
- content-divergent: c7d2d47c7240 (public) (precursor 4ab2719bbab9)
-
- 8ae8db670b4a: c_F
- content-divergent: a52ac76b45f5 (public) (precursor 77ccbf8d837e)
-
- $ hg log -G --patch
- * changeset: 10:8ae8db670b4a
- | tag: tip
- | user: test
- | date: Thu Jan 01 00:00:00 1970 +0000
- | instability: content-divergent
- | summary: c_F
- |
- | diff -r b4a584aea4bd -r 8ae8db670b4a c_F
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c_F Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c_F
- |
- * changeset: 9:b4a584aea4bd
- | parent: 3:abb77b893f28
- | user: test
- | date: Thu Jan 01 00:00:00 1970 +0000
- | instability: content-divergent
- | summary: c_E
- |
- | diff -r abb77b893f28 -r b4a584aea4bd c_E
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c_E Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c_E
- |
- | @ changeset: 8:a52ac76b45f5
- | | user: test
- | | date: Thu Jan 01 00:00:00 1970 +0000
- | | summary: c_F
- | |
- | | diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
- | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | | +++ b/c_F Thu Jan 01 00:00:00 1970 +0000
- | | @@ -0,0 +1,1 @@
- | | +c_F
- | |
- | o changeset: 7:c7d2d47c7240
- | | parent: 2:eb1b4e1205b8
- | | user: test
- | | date: Thu Jan 01 00:00:00 1970 +0000
- | | summary: c_E
- | |
- | | diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
- | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | | +++ b/c_E Thu Jan 01 00:00:00 1970 +0000
- | | @@ -0,0 +1,1 @@
- | | +c_E
- | |
- +---o changeset: 4:dbb960d6c97c
- | | user: test
- | | date: Thu Jan 01 00:00:00 1970 +0000
- | | summary: c_D
- | |
- | | diff -r abb77b893f28 -r dbb960d6c97c c_D
- | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | | +++ b/c_D Thu Jan 01 00:00:00 1970 +0000
- | | @@ -0,0 +1,1 @@
- | | +c_D
- | |
- o | changeset: 3:abb77b893f28
- |/ user: test
- | date: Thu Jan 01 00:00:00 1970 +0000
- | summary: c_C
- |
- | diff -r eb1b4e1205b8 -r abb77b893f28 c_C
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c_C Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c_C
- |
- o changeset: 2:eb1b4e1205b8
- | user: test
- | date: Thu Jan 01 00:00:00 1970 +0000
- | summary: c_B
- |
- | diff -r e31751786014 -r eb1b4e1205b8 c_B
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c_B Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c_B
- |
- o changeset: 1:e31751786014
- | user: test
- | date: Thu Jan 01 00:00:00 1970 +0000
- | summary: c_A
- |
- | diff -r 1e4be0697311 -r e31751786014 c_A
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c_A Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c_A
- |
- o changeset: 0:1e4be0697311
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: root
-
- diff -r 000000000000 -r 1e4be0697311 root
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/root Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +root
-
-
-Run automatic evolution
-
- $ hg evolve --content-divergent --rev 'not public() and desc("c_E")::'
- merge:[7] c_E
- with: [9] c_E
- base: [5] c_E
- rebasing "other" content-divergent changeset b4a584aea4bd on eb1b4e1205b8
- updating to "local" side of the conflict: c7d2d47c7240
- merging "other" content-divergent changeset '0773642cfa95'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- 1 new orphan changesets
- merge:[8] c_F
- with: [10] c_F
- base: [6] c_F
- rebasing "other" content-divergent changeset 8ae8db670b4a on c7d2d47c7240
- updating to "local" side of the conflict: a52ac76b45f5
- merging "other" content-divergent changeset '6a87ed4aa317'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ hg sum
- parent: 8:a52ac76b45f5 tip
- c_F
- branch: default
- commit: (clean)
- update: 2 new changesets, 2 branch heads (merge)
- phases: 2 draft
-
- $ hg evolve --list
-
- $ hg log -G --patch
- @ changeset: 8:a52ac76b45f5
- | tag: tip
- | user: test
- | date: Thu Jan 01 00:00:00 1970 +0000
- | summary: c_F
- |
- | diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c_F Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c_F
- |
- o changeset: 7:c7d2d47c7240
- | parent: 2:eb1b4e1205b8
- | user: test
- | date: Thu Jan 01 00:00:00 1970 +0000
- | summary: c_E
- |
- | diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c_E Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c_E
- |
- | o changeset: 4:dbb960d6c97c
- | | user: test
- | | date: Thu Jan 01 00:00:00 1970 +0000
- | | summary: c_D
- | |
- | | diff -r abb77b893f28 -r dbb960d6c97c c_D
- | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | | +++ b/c_D Thu Jan 01 00:00:00 1970 +0000
- | | @@ -0,0 +1,1 @@
- | | +c_D
- | |
- | o changeset: 3:abb77b893f28
- |/ user: test
- | date: Thu Jan 01 00:00:00 1970 +0000
- | summary: c_C
- |
- | diff -r eb1b4e1205b8 -r abb77b893f28 c_C
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c_C Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c_C
- |
- o changeset: 2:eb1b4e1205b8
- | user: test
- | date: Thu Jan 01 00:00:00 1970 +0000
- | summary: c_B
- |
- | diff -r e31751786014 -r eb1b4e1205b8 c_B
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c_B Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c_B
- |
- o changeset: 1:e31751786014
- | user: test
- | date: Thu Jan 01 00:00:00 1970 +0000
- | summary: c_A
- |
- | diff -r 1e4be0697311 -r e31751786014 c_A
- | --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- | +++ b/c_A Thu Jan 01 00:00:00 1970 +0000
- | @@ -0,0 +1,1 @@
- | +c_A
- |
- o changeset: 0:1e4be0697311
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: root
-
- diff -r 000000000000 -r 1e4be0697311 root
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/root Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +root
-
- $ hg export tip
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID a52ac76b45f523a039fc4a938d79874f4bdb1a85
- # Parent c7d2d47c7240562be5cbd1a24080dd0396178709
- c_F
-
- diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/c_F Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +c_F
-
- $ hg obslog --rev a52ac76b45f5
- @ a52ac76b45f5 (8) c_F
- |\
- x | 6a87ed4aa317 (12) c_F
- | | rewritten as a52ac76b45f5 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
- | |
- x | 8ae8db670b4a (10) c_F
- |/ rewritten(parent) as 6a87ed4aa317 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
- |
- x 77ccbf8d837e (6) c_F
- rewritten(parent) as 8ae8db670b4a using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
- rewritten(parent) as a52ac76b45f5 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
-
--- a/tests/test-evolve-serveronly-bundle2.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-serveronly-bundle2.t Tue Jun 04 11:08:44 2019 +0200
@@ -86,9 +86,9 @@
===================
$ curl -s http://localhost:$HGPORT/?cmd=hello
- capabilities: _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v1 batch * (glob)
+ capabilities: _evoext_getbundle_obscommon _evoext_obshashrange_v1 batch * (glob)
$ curl -s http://localhost:$HGPORT/?cmd=capabilities
- _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v1 batch * (no-eol) (glob)
+ _evoext_getbundle_obscommon _evoext_obshashrange_v1 batch * (no-eol) (glob)
$ curl -s "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort
bookmarks
@@ -151,9 +151,9 @@
obsolete
phases
$ curl -s http://localhost:$HGPORT/?cmd=hello
- capabilities: _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v1 batch * (glob)
+ capabilities: _evoext_getbundle_obscommon _evoext_obshashrange_v1 batch * (glob)
$ curl -s http://localhost:$HGPORT/?cmd=capabilities
- _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v1 batch * (no-eol) (glob)
+ _evoext_getbundle_obscommon _evoext_obshashrange_v1 batch * (no-eol) (glob)
$ echo '[experimental]' >> server/.hg/hgrc
$ echo 'evolution=!' >> server/.hg/hgrc
@@ -178,9 +178,9 @@
phases
$ curl -s http://localhost:$HGPORT/?cmd=hello
- capabilities: _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v1 batch * (glob)
+ capabilities: _evoext_getbundle_obscommon _evoext_obshashrange_v1 batch * (glob)
$ curl -s http://localhost:$HGPORT/?cmd=capabilities
- _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v1 batch * (no-eol) (glob)
+ _evoext_getbundle_obscommon _evoext_obshashrange_v1 batch * (no-eol) (glob)
Test obshashrange discover
===========================================
--- a/tests/test-evolve-split.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-split.t Tue Jun 04 11:08:44 2019 +0200
@@ -59,4 +59,3 @@
$ hg evolve --rev "0::"
move:[2] add uu
atop:[4] _pp
- working directory is now at 6f5bbe2e3df3
--- a/tests/test-evolve-stop-orphan.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-stop-orphan.t Tue Jun 04 11:08:44 2019 +0200
@@ -191,7 +191,7 @@
we do `evolve --stop`
--------------------------------------------------------------------------------
- $ hg evolve
+ $ hg evolve --update
move:[4] added d
atop:[5] added c
merging d
@@ -293,13 +293,13 @@
evolving 5:cb6a2ab625bb "added c"
move:[6] added d
atop:[10] added c
- working directory is now at cd0909a30222
+ working directory is now at aec285328e90
$ hg glog
- @ 11:cd0909a30222 added d
+ o 11:cd0909a30222 added d
| () draft
o 10:cb1dd1086ef6 added c
| () draft
- o 9:aec285328e90 added b
+ @ 9:aec285328e90 added b
| () draft
o 8:fd00db71edca added a
| () draft
@@ -310,8 +310,8 @@
bookmarks of rest of them should stay where they are are
-------------------------------------------------------------------------
- $ hg up .^
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg up tip^
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg bookmark b1
$ hg up .^
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-evolve-templates.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-templates.t Tue Jun 04 11:08:44 2019 +0200
@@ -1544,7 +1544,7 @@
$ mkcommit A0
$ hg prune .
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at ea207398892e
+ working directory is now at ea207398892e
1 changesets pruned
Check output
--- a/tests/test-evolve-topic.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve-topic.t Tue Jun 04 11:08:44 2019 +0200
@@ -132,7 +132,7 @@
s1: add ccc
s0^ add bbb (base)
- $ hg evolve --all
+ $ hg evolve --all --update
move:[s3] add eee
atop:[s2] add ddd
move:[s4] add fff
@@ -168,7 +168,7 @@
Test that evolve does not loose topic information
-------------------------------------------------
- $ hg evolve --rev 'topic(bar)'
+ $ hg evolve --rev 'topic(bar)' --update
move:[6] add ggg
atop:[13] add fff
move:[7] add hhh
@@ -304,7 +304,7 @@
$ hg topic
- * bar (5 changesets, 4 troubled)
+ * bar (5 changesets, 4 unstable)
foo (3 changesets)
When the current topic, obsoleted changesets topic and successor topic are same
@@ -393,9 +393,6 @@
move:[s3] add hhh
move:[s4] add iii
move:[s5] add jjj
- working directory is now at 38a82cbb794a
- $ hg up 18
- 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
$ echo "changes in hhh" > hhh
$ hg add hhh
$ hg ci --amend
@@ -440,4 +437,4 @@
move:[s4] add iii
atop:[s3] add hhh
move:[s5] add jjj
- working directory is now at 119e4c126fb2
+ working directory is now at 2c295936ac04
--- a/tests/test-evolve.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-evolve.t Tue Jun 04 11:08:44 2019 +0200
@@ -156,7 +156,7 @@
5
$ hg prune .
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at fbb94e3a0ecf
+ working directory is now at fbb94e3a0ecf
1 changesets pruned
$ hg qlog
4 - fbb94e3a0ecf add e (draft)
@@ -169,7 +169,7 @@
$ hg prune 4 -r 3
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at 7c3bad9141dc
+ working directory is now at 7c3bad9141dc
2 changesets pruned
$ hg qlog
2 - 4538525df7e2 add c (draft)
@@ -184,7 +184,7 @@
$ hg add g
$ hg prune .
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at 7c3bad9141dc
+ working directory is now at 7c3bad9141dc
1 changesets pruned
$ hg st
A g
@@ -368,7 +368,6 @@
move:[3] another feature (child of 568a468b60fc)
atop:[4] a nifty feature
merging main-file-1
- working directory is now at 99833d22b0c6
$ hg log
5 feature-B: another feature (child of ba0ec09b1bab) - test
4 feature-A: a nifty feature - test
@@ -377,7 +376,7 @@
Test commit -o options
$ hg up -r "desc('a nifty feature')"
- 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg revert -r "desc('another feature')" --all
reverting main-file-1
adding file-from-B
@@ -442,7 +441,7 @@
(ninja test for the {trouble} template:
- $ hg log -G --template '{rev} {troubles}\n'
+ $ hg log -G --template '{rev} {instabilities}\n'
@ 10
|
| * 9 orphan
@@ -467,13 +466,12 @@
merging main-file-1
move:[9] dansk 3!
merging main-file-1
- working directory is now at 96abb1319a47
$ hg log -G
- @ 12 : dansk 3! - test
+ o 12 : dansk 3! - test
|
o 11 : dansk 2! - test
|
- o 10 feature-B: dansk! - test
+ @ 10 feature-B: dansk! - test
|
o 5 : another feature (child of ba0ec09b1bab) - test
|
@@ -838,6 +836,8 @@
Test fold with commit messages
$ cd ../work
+ $ hg up
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg fold --from .^ --message "Folding with custom commit message"
2 changesets folded
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -907,12 +907,11 @@
$ hg evolve
move:[3] a3
atop:[4] a2
- working directory is now at 7c5649f73d11
$ hg log -G --template '{rev} [{branch}] {desc|firstline}\n'
- @ 5 [mybranch] a3
+ o 5 [mybranch] a3
|
- o 4 [mybranch] a2
+ @ 4 [mybranch] a2
|
o 1 [default] a1
|
@@ -925,28 +924,24 @@
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg amend -m 'a1_'
2 new orphan changesets
- $ hg evolve
+ $ hg evolve --rev 'first(orphan())'
move:[4] a2
atop:[6] a1_
- working directory is now at eb07e22a0e63
$ hg evolve
move:[5] a3
atop:[7] a2
- working directory is now at 777c26ca5e78
$ hg log -G --template '{rev} [{branch}] {desc|firstline}\n'
- @ 8 [mybranch] a3
+ o 8 [mybranch] a3
|
o 7 [mybranch] a2
|
- o 6 [default] a1_
+ @ 6 [default] a1_
|
o 0 [default] a0
Evolve from the middle of a stack pick the right changesets.
- $ hg up -r "desc('a1_')"
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg ci --amend -m 'a1__'
2 new orphan changesets
@@ -977,17 +972,16 @@
$ ls .hg/bookmarks*
.hg/bookmarks
.hg/bookmarks.* (glob)
- $ hg evolve
+ $ hg evolve --rev 'first(orphan())'
move:[7] a2
atop:[9] a1__
(leaving bookmark testbookmark)
- working directory is now at d952e93add6f
$ ls .hg/bookmarks*
.hg/bookmarks
$ glog
- @ 10:d952e93add6f@mybranch(draft) a2
+ o 10:d952e93add6f@mybranch(draft) a2
|
- o 9:9f8b83c2e7f3@default(draft) a1__
+ @ 9:9f8b83c2e7f3@default(draft) a1__
|
| * 8:777c26ca5e78@mybranch(draft) a3
| |
@@ -1000,8 +994,6 @@
Possibility to select what instability to solve first, asking for
phase-divergent before content-divergent
- $ hg up -r "desc('a1__')"
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg revert -r d952e93add6f --all
reverting a
$ hg log -G --template '{rev} [{branch}] {desc|firstline}\n'
@@ -1064,11 +1056,10 @@
$ hg evolve --any
move:[8] a3
atop:[12] phase-divergent update to d952e93add6f:
- working directory is now at b88539ad24d7
$ glog
- @ 13:b88539ad24d7@default(draft) a3
+ o 13:b88539ad24d7@default(draft) a3
|
- o 12:a8bb31d4b7f2@default(draft) phase-divergent update to d952e93add6f:
+ @ 12:a8bb31d4b7f2@default(draft) phase-divergent update to d952e93add6f:
|
o 10:d952e93add6f@mybranch(public) a2
|
@@ -1079,7 +1070,7 @@
Check that we can resolve instabilities in a revset with more than one commit
$ hg up b88539ad24d7 -C
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ mkcommit gg
$ hg up b88539ad24d7
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -1137,13 +1128,12 @@
atop:[16] a3
move:[15] add gh
atop:[16] a3
- working directory is now at 0c049e4e5422
$ glog
- @ 18:0c049e4e5422@default(draft) add gh
+ o 18:0c049e4e5422@default(draft) add gh
|
| o 17:98e171e2f272@default(draft) add gg
|/
- o 16:0cf3707e8971@default(draft) a3
+ @ 16:0cf3707e8971@default(draft) a3
|
o 12:a8bb31d4b7f2@default(draft) phase-divergent update to d952e93add6f:
|
@@ -1183,7 +1173,7 @@
Shows "use 'hg evolve' to..." hints iff the evolve command is enabled
$ hg --hidden up 14
- 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
updated to hidden changeset 484fb3cfa7f2
(hidden revision '484fb3cfa7f2' was rewritten as: 98e171e2f272)
working directory parent is obsolete! (484fb3cfa7f2)
@@ -1287,15 +1277,14 @@
move:[20] add j2
atop:[23] add j1
move:[21] add j3
- working directory is now at 0d9203b74542
$ glog -r "0cf3707e8971::"
- @ 25:0d9203b74542@default(draft) add j3
+ o 25:0d9203b74542@default(draft) add j3
|
o 24:f1b85956c48c@default(draft) add j2
|
o 23:0ef9ff75f8e2@default(draft) add j1
|
- | o 18:0c049e4e5422@default(draft) add gh
+ | @ 18:0c049e4e5422@default(draft) add gh
| |
o | 17:98e171e2f272@default(draft) add gg
|/
@@ -1303,7 +1292,7 @@
|
~
$ hg up 98e171e2f272
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ mkcommit c5_
created new head
$ hg prune '0ef9ff75f8e2 + f1b85956c48c'
@@ -1351,74 +1340,18 @@
$ hg fold --exact "98e171e2f272::"
2 changesets folded
-Check that evolve shows error while handling split commits
---------------------------------------
+Check that dirstate changes are kept at failure for conflicts (issue4966)
+----------------------------------------
$ cat >> $HGRCPATH <<EOF
> [experimental]
> evolution=all
> EOF
- $ glog -r "0cf3707e8971::"
- o 28:92ca6f3984de@default(draft) add gg
- |
- | @ 27:2d1b55e10be9@default(draft) add unstableifparentisfolded
- |/
- | o 18:0c049e4e5422@default(draft) add gh
- |/
- o 16:0cf3707e8971@default(draft) a3
- |
- ~
-
-Create a split commit
- $ printf "oo" > oo;
- $ printf "pp" > pp;
- $ hg add oo pp
- $ hg commit -m "oo+pp"
- $ mkcommit uu
- $ hg up 2d1b55e10be9
- 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
- $ printf "oo" > oo;
- $ hg add oo
- $ hg commit -m "_oo"
- created new head
- $ printf "pp" > pp;
- $ hg add pp
- $ hg commit -m "_pp"
- $ hg prune --succ "desc(_oo) + desc(_pp)" -r "desc('oo+pp')" --split
- 1 changesets pruned
- 1 new orphan changesets
- $ glog -r "0cf3707e8971::"
- @ 32:c7dbf668e9d5@default(draft) _pp
- |
- o 31:2b5a32114b3d@default(draft) _oo
- |
- | * 30:4d122571f3b6@default(draft) add uu
- | |
- | x 29:7da3e73df8a5@default(draft) oo+pp
- |/
- | o 28:92ca6f3984de@default(draft) add gg
- | |
- o | 27:2d1b55e10be9@default(draft) add unstableifparentisfolded
- |/
- | o 18:0c049e4e5422@default(draft) add gh
- |/
- o 16:0cf3707e8971@default(draft) a3
- |
- ~
- $ hg evolve --rev "0cf3707e8971::"
- move:[30] add uu
- atop:[32] _pp
- working directory is now at be23044af550
-
-
-Check that dirstate changes are kept at failure for conflicts (issue4966)
-----------------------------------------
-
$ echo "will be amended" > newfile
$ hg commit -m "will be amended"
$ hg parents
- 34 : will be amended - test
+ 29 : will be amended - test
$ echo "will be evolved safely" >> a
$ hg commit -m "will be evolved safely"
@@ -1429,17 +1362,11 @@
$ hg commit -m "will cause conflict at evolve"
$ glog -r "0cf3707e8971::"
- @ 36:59c37c5bebd1@default(draft) will cause conflict at evolve
- |
- o 35:7cc12c6c7862@default(draft) will be evolved safely
- |
- o 34:98c7ab460e6b@default(draft) will be amended
+ @ 31:5be050657ca5@default(draft) will cause conflict at evolve
|
- o 33:be23044af550@default(draft) add uu
+ o 30:748126f98ff1@default(draft) will be evolved safely
|
- o 32:c7dbf668e9d5@default(draft) _pp
- |
- o 31:2b5a32114b3d@default(draft) _oo
+ o 29:4548f3a8db2c@default(draft) will be amended
|
| o 28:92ca6f3984de@default(draft) add gg
| |
@@ -1451,32 +1378,32 @@
|
~
- $ hg update -q 98c7ab460e6b
+ $ hg update -q -r "desc('will be amended')"
$ echo "amended" > newfile
$ hg amend -m "amended"
2 new orphan changesets
- $ hg evolve --rev "98c7ab460e6b::"
- move:[35] will be evolved safely
- atop:[37] amended
- move:[36] will cause conflict at evolve
+ $ hg evolve --rev "desc('will be amended')::"
+ move:[30] will be evolved safely
+ atop:[32] amended
+ move:[31] will cause conflict at evolve
merging newfile
warning: conflicts while merging newfile! (edit, then use 'hg resolve --mark')
fix conflicts and see `hg help evolve.interrupted`
[1]
- $ glog -r "be23044af550::" --hidden
- @ 38:61abd81de026@default(draft) will be evolved safely
+ $ glog -r "desc('add unstableifparentisfolded')::" --hidden
+ @ 33:b9acdb1af6d5@default(draft) will be evolved safely
|
- o 37:df89d30f23e2@default(draft) amended
+ o 32:6ec468e4cb98@default(draft) amended
|
- | @ 36:59c37c5bebd1@default(draft) will cause conflict at evolve
+ | @ 31:5be050657ca5@default(draft) will cause conflict at evolve
| |
- | x 35:7cc12c6c7862@default(draft) will be evolved safely
+ | x 30:748126f98ff1@default(draft) will be evolved safely
| |
- | x 34:98c7ab460e6b@default(draft) will be amended
+ | x 29:4548f3a8db2c@default(draft) will be amended
|/
- o 33:be23044af550@default(draft) add uu
+ o 27:2d1b55e10be9@default(draft) add unstableifparentisfolded
|
~
@@ -1514,6 +1441,7 @@
update:[1] added a
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at ab832e43dd5a
+ no troubled changesets
$ hg log -GT "{rev}:{node|short} {desc} ({bookmarks})\n" --hidden
@ 1:ab832e43dd5a added a (book)
@@ -1521,109 +1449,3 @@
x 0:f7ad41964313 added a ()
$ cd ..
-
-Test which shows that orphanmerge evolution can result to crash because of
-lastsolved not being updated in case of orphanmerge:
-(It will be fixed in next patch)
-
-Prepare the repo:
- $ hg init orphanmergerepo
- $ cd orphanmergerepo
- $ echo a > a
- $ for fn in a b c; do echo foo > $fn; hg ci -Am "added "$fn; done;
- adding a
- adding b
- adding c
-Let's create a merge commit so that we can create orphan merge later:
- $ hg up 1 -q
- $ echo feature > f
- $ hg ci -Am "added feature f"
- adding f
- created new head
- $ hg merge
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- (branch merge, don't forget to commit)
- $ hg ci -m "merge feature branch"
- $ glog
- @ 4:2c0a98d38026@default(draft) merge feature branch
- |\
- | o 3:4c33e511041e@default(draft) added feature f
- | |
- o | 2:8be98ac1a569@default(draft) added c
- |/
- o 1:80e6d2c47cfe@default(draft) added b
- |
- o 0:f7ad41964313@default(draft) added a
-
-
-Now make the parents of merge commit obsolete to get a orphan merge:
- $ hg up 2 -q
- $ echo "fixit" > c
- $ hg ci --amend -m "updated c"
- 1 new orphan changesets
- $ hg up 3 -q
- $ echo "fixit" > c
- $ hg ci --amend -m "updated f"
- $ glog
- @ 6:086d9bedcd75@default(draft) updated f
- |
- | o 5:f84f2c548fbc@default(draft) updated c
- |/
- | * 4:2c0a98d38026@default(draft) merge feature branch
- | |\
- +---x 3:4c33e511041e@default(draft) added feature f
- | |
- | x 2:8be98ac1a569@default(draft) added c
- |/
- o 1:80e6d2c47cfe@default(draft) added b
- |
- o 0:f7ad41964313@default(draft) added a
-
-
-To check `lastsolved` contain right value after completion of orphan-merge
-resolution there should be one more instability to be evolved; lets create one:
- $ hg up 1 -q
- $ echo d > d
- $ hg ci -Am "added d"
- adding c
- adding d
- created new head
- $ echo e > e
- $ hg ci -Am "added e"
- adding e
- $ hg up .^
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo "updated d" >> d
- $ hg ci --amend -m "updated d"
- 1 new orphan changesets
- $ glog
- @ 9:7c4d1834c346@default(draft) updated d
- |
- | * 8:421f7614462a@default(draft) added e
- | |
- | x 7:afe5acea1990@default(draft) added d
- |/
- | o 6:086d9bedcd75@default(draft) updated f
- |/
- | o 5:f84f2c548fbc@default(draft) updated c
- |/
- | * 4:2c0a98d38026@default(draft) merge feature branch
- | |\
- +---x 3:4c33e511041e@default(draft) added feature f
- | |
- | x 2:8be98ac1a569@default(draft) added c
- |/
- o 1:80e6d2c47cfe@default(draft) added b
- |
- o 0:f7ad41964313@default(draft) added a
-
-Now we have one orphan merge and one more orphan cset that we just created.
-Lets evolve:
- $ hg evolve --all --any
- move:[4] merge feature branch
- atop:[5] updated c
- move:[10] merge feature branch
- atop:[6] updated f
- move:[8] added e
- atop:[9] updated d
- working directory is now at 7c67cee06242
--- a/tests/test-exchange-obsmarkers-case-D2.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-exchange-obsmarkers-case-D2.t Tue Jun 04 11:08:44 2019 +0200
@@ -57,7 +57,7 @@
obsoleted 1 changesets
$ hg prune --date '0 0' .
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at a9bdc8b26820
+ working directory is now at a9bdc8b26820
1 changesets pruned
$ hg strip --hidden -q 'desc(A1)' --config devel.strip-obsmarkers=no
$ hg log -G --hidden
--- a/tests/test-exchange-obsmarkers-case-D3.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-exchange-obsmarkers-case-D3.t Tue Jun 04 11:08:44 2019 +0200
@@ -60,7 +60,7 @@
obsoleted 1 changesets
$ hg prune -d '0 0' .
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at 35b183996678
+ working directory is now at 35b183996678
1 changesets pruned
$ hg strip --hidden -q 'desc(A1)' --config devel.strip-obsmarkers=no
$ hg log -G --hidden
--- a/tests/test-extension-isolation.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-extension-isolation.t Tue Jun 04 11:08:44 2019 +0200
@@ -121,8 +121,6 @@
[1]
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-evo | egrep 'topics|evoext'
_evoext_getbundle_obscommon
- _evoext_obshash_0
- _evoext_obshash_1
_evoext_obshashrange_v1
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-no-ext | egrep 'topics|evoext'
[1]
@@ -144,21 +142,15 @@
[1]
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-both | egrep 'topics|evoext'
_evoext_getbundle_obscommon
- _evoext_obshash_0
- _evoext_obshash_1
_evoext_obshashrange_v1
topics
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-evo | egrep 'topics|evoext'
_evoext_getbundle_obscommon
- _evoext_obshash_0
- _evoext_obshash_1
_evoext_obshashrange_v1
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-topic | egrep 'topics|evoext'
topics
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-evo | egrep 'topics|evoext'
_evoext_getbundle_obscommon
- _evoext_obshash_0
- _evoext_obshash_1
_evoext_obshashrange_v1
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-no-ext | egrep 'topics|evoext'
[1]
--- a/tests/test-issue-5720.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-issue-5720.t Tue Jun 04 11:08:44 2019 +0200
@@ -73,15 +73,15 @@
Continue the evolution
$ hg evolve --continue
evolving 2:13833940840c "c"
- working directory is now at 3d2080c198e5
+ working directory is now at 87495ea7c9ec
Tip should stay in secret phase
$ hg log -G -T "{rev}: {phase}"
- @ 4: secret
+ o 4: secret
|
- o 3: draft
+ @ 3: draft
|
o 0: draft
- $ hg log -r . -T '{phase}\n'
+ $ hg log -r tip -T '{phase}\n'
secret
--- a/tests/test-issue-6028.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-issue-6028.t Tue Jun 04 11:08:44 2019 +0200
@@ -112,7 +112,7 @@
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
start the evolve
- $ hg evolve
+ $ hg evolve --update --no-all
move:[8] merged aa
atop:[4] merged b
working directory is now at c920dd828523
--- a/tests/test-obsolete.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-obsolete.t Tue Jun 04 11:08:44 2019 +0200
@@ -66,9 +66,9 @@
2
- 4538525df7e2
-Test that obsolete precursors are properly computed
+Test that obsolete predecessors are properly computed
- $ qlog -r 'precursors(.)' --hidden
+ $ qlog -r 'predecessors(.)' --hidden
2
- 4538525df7e2
$ qlog -r .
@@ -110,7 +110,7 @@
- 4538525df7e2
3
- 0d3f46688ccc
- $ qlog -r 'allprecursors(4)' --hidden
+ $ qlog -r 'allpredecessors(4)' --hidden
2
- 4538525df7e2
3
--- a/tests/test-prev-next.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-prev-next.t Tue Jun 04 11:08:44 2019 +0200
@@ -198,7 +198,7 @@
$ hg next --evolve --color debug
[evolve.operation|move:][[evolve.rev|2]] added c
atop:[[evolve.rev|3]] added b (2)
- [ ui.status|working directory now at [evolve.node|e3b6d5df389b]]
+ [ ui.status|working directory is now at [evolve.node|e3b6d5df389b]]
next with ambiguity
@@ -245,7 +245,7 @@
enter the index of the revision you want to select: 1
move:[4] added c
atop:[6] added b (3)
- working directory now at 5ce67c2407b0
+ working directory is now at 5ce67c2407b0
$ hg log -GT "{rev}:{node|short} {desc}\n"
@ 7:5ce67c2407b0 added c
@@ -259,7 +259,7 @@
o 0:a154386e50d1 added a
- $ hg evolve -r 5
+ $ hg evolve -r 5 --update
move:[5] added d
atop:[6] added b (3)
working directory is now at 47ea25be8aea
@@ -352,7 +352,7 @@
got lock after (\d+) seconds (re)
move:[2] two
atop:[3] one
- working directory now at a7d885c75614
+ working directory is now at a7d885c75614
$ wait
testing next --evolve when working directory is dirty
@@ -598,4 +598,4 @@
> EOF
move:[4] B
atop:[5] B modified
- working directory now at 1b434459c7e7
+ working directory is now at 1b434459c7e7
--- a/tests/test-prune.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-prune.t Tue Jun 04 11:08:44 2019 +0200
@@ -58,7 +58,7 @@
$ hg prune --user blah --date '1979-12-15' .
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at 47d2a3944de8
+ working directory is now at 47d2a3944de8
1 changesets pruned
$ hg bookmark
* BABAR 3:47d2a3944de8
@@ -81,7 +81,7 @@
$ hg prune 2: --color debug
[ ui.status|0 files updated, 0 files merged, 3 files removed, 0 files unresolved]
- [ ui.status|working directory now at [evolve.node|1f0dee641bb7]]
+ [ ui.status|working directory is now at [evolve.node|1f0dee641bb7]]
[ ui.status|2 changesets pruned]
$ hg debugobsolete
9d206ffc875e1bc304590549be293be36821e66c 0 {47d2a3944de8b013de3be9578e8e344ea2e6c097} (Sat Dec 15 00:00:00 1979 +0000) {'ef1': '0', 'operation': 'prune', 'user': 'blah'}
@@ -142,7 +142,7 @@
4 files updated, 0 files merged, 4 files removed, 0 files unresolved
$ hg prune 'desc("add ee")' -s 'desc("add nE")'
4 files updated, 0 files merged, 4 files removed, 0 files unresolved
- working directory now at 6e8148413dd5
+ working directory is now at 6e8148413dd5
1 changesets pruned
$ hg debugobsolete
9d206ffc875e1bc304590549be293be36821e66c 0 {47d2a3944de8b013de3be9578e8e344ea2e6c097} (Sat Dec 15 00:00:00 1979 +0000) {'ef1': '0', 'operation': 'prune', 'user': 'blah'}
@@ -239,7 +239,7 @@
$ hg prune 'desc("add n1")::desc("add n2")' -s 'desc("add nD")::desc("add nE")' --pair
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- working directory now at 1f0dee641bb7
+ working directory is now at 1f0dee641bb7
2 changesets pruned
$ hg debugobsolete
9d206ffc875e1bc304590549be293be36821e66c 0 {47d2a3944de8b013de3be9578e8e344ea2e6c097} (Sat Dec 15 00:00:00 1979 +0000) {'ef1': '0', 'operation': 'prune', 'user': 'blah'}
@@ -262,7 +262,7 @@
$ mkcommit n2
$ hg --config extensions.strip= --config experimental.prunestrip=True strip -r .
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at c7e58696a948
+ working directory is now at c7e58696a948
1 changesets pruned
$ hg --config extensions.strip= --config experimental.prunestrip=True strip -r . --bundle
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -308,7 +308,7 @@
$ hg prune -B todelete
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark todelete)
- working directory now at d62d843c9a01
+ working directory is now at d62d843c9a01
bookmark 'todelete' deleted
1 changesets pruned
$ hg id -ir dcbb326fdec2
--- a/tests/test-rewind.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-rewind.t Tue Jun 04 11:08:44 2019 +0200
@@ -661,7 +661,7 @@
$ echo AA >> A
$ hg amend -m 'c_A1'
1 new orphan changesets
- $ hg evolve --all
+ $ hg evolve --all --update
move:[2] c_B0
atop:[3] c_A1
working directory is now at a65fceb2324a
@@ -802,7 +802,7 @@
Automatically rewinding the full stack (with --to)
--------------------------------------------------
- $ hg rewind --hidden --to 'precursors(.)'
+ $ hg rewind --hidden --to 'predecessors(.)'
rewinded to 2 changesets
(2 changesets obsoleted)
working directory is now at 70892f498f29
--- a/tests/test-sharing.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-sharing.t Tue Jun 04 11:08:44 2019 +0200
@@ -516,7 +516,6 @@
merge:[5] fix bug 24 (v2 by bob)
with: [6] fix bug 24 (v2 by alice)
base: [4] fix bug 24 (v1)
- merging "other" content-divergent changeset 'e3f99ce9d9cd'
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
working directory is now at b1499b0f03ca
$ hg log -q -r 'contentdivergent()'
@@ -534,7 +533,7 @@
o 3:a06ec1bf97bd public fix bug 15 (v2)
|
~
- $ hg --hidden shortlog -r 'precursors(b1499b0f03ca)'
+ $ hg --hidden shortlog -r 'predecessors(b1499b0f03ca)'
5:a360947f6faf draft fix bug 24 (v2 by bob)
6:e3f99ce9d9cd draft fix bug 24 (v2 by alice)
$ cat file1
--- a/tests/test-split.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-split.t Tue Jun 04 11:08:44 2019 +0200
@@ -151,7 +151,7 @@
$ echo "change to b" >> _b
$ hg amend -m "_cprim"
2 new orphan changesets
- $ hg evolve --all
+ $ hg evolve --all --update
move:[5] split1
atop:[7] _cprim
move:[6] split2
@@ -218,7 +218,7 @@
2d8abdb827cdf71ca477ef6985d7ceb257c53c1b e2b4afde39803bd42bb1374b230fca1b1e8cc868 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '4', 'operation': 'evolve', 'user': 'test'}
033b3f5ae73db67c10de938fb6f26b949aaef172 bb5e4f6020c74e7961a51fda635ea9df9b04dda8 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '4', 'operation': 'evolve', 'user': 'test'}
b434287e665ce757ee5463a965cb3d119ca9e893 ead2066d1dbf14833fe1069df1b735e4e9468c40 1188c4216eba37f18a1de6558564601d00ff2143 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'operation': 'split', 'user': 'test'}
- $ hg evolve --all
+ $ hg evolve --all --update
move:[8] split1
atop:[11] split4
move:[9] split2
@@ -1134,16 +1134,15 @@
Pruning revision 4 (current one):
$ hg prune .
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at 88437e073cd4
+ working directory is now at 88437e073cd4
1 changesets pruned
$ hg evolve -r 2
move:[2] c
atop:[3] split1
- working directory is now at 21a63bd6ee88
$ hg glog
- @ 5:21a63bd6ee88 c (draft)
+ o 5:21a63bd6ee88 c (draft)
|
- o 3:88437e073cd4 split1 (draft)
+ @ 3:88437e073cd4 split1 (draft)
|
o 0:a5a1faba8d26 p (draft)
--- a/tests/test-stabilize-conflict.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-stabilize-conflict.t Tue Jun 04 11:08:44 2019 +0200
@@ -77,7 +77,7 @@
dix
$ hg amend
1 new orphan changesets
- $ hg evolve
+ $ hg evolve --update
move:[2] babar count up to fifteen
atop:[3] babar count up to ten
merging babar
@@ -123,7 +123,7 @@
+ten
$ hg amend
1 new orphan changesets
- $ hg evolve
+ $ hg evolve --update
move:[4] babar count up to fifteen
atop:[5] babar count up to ten
merging babar
--- a/tests/test-stabilize-order.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-stabilize-order.t Tue Jun 04 11:08:44 2019 +0200
@@ -62,7 +62,7 @@
Test stabilizing a predecessor child
- $ hg evolve -v
+ $ hg evolve -v --rev 'last(orphan())'
move:[4] addb
atop:[5] adda
hg rebase -r 22619daeed78 -d 005fe5914f78
@@ -72,11 +72,12 @@
b
committing manifest
committing changelog
- working directory is now at 81b8bbcd5892
+ resolving manifests
+ removing b
$ glog
- @ 6:81b8bbcd5892@default(draft) addb
+ o 6:81b8bbcd5892@default(draft) addb
|
- o 5:005fe5914f78@default(draft) adda
+ @ 5:005fe5914f78@default(draft) adda
|
| * 3:7a7552255fb5@default(draft) addc
| |
@@ -89,10 +90,8 @@
Test stabilizing a descendant predecessor's child
- $ hg up -r 005fe5914f78
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg debugobsolete > successors.old
- $ hg evolve -v
+ $ hg evolve -v --update
move:[3] addc
atop:[6] addb
hg rebase -r 7a7552255fb5 -d 81b8bbcd5892
@@ -239,7 +238,7 @@
date: Thu Jan 01 00:00:00 1970 +0000
summary: addroot
- $ hg evolve
+ $ hg evolve --no-all
abort: multiple evolve candidates
(select one of *, * with --rev) (glob)
[255]
--- a/tests/test-stack-branch.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-stack-branch.t Tue Jun 04 11:08:44 2019 +0200
@@ -87,14 +87,14 @@
Test "t#" reference
-------------------
- $ hg up b2
+ $ hg up s2
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg up foo
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ hg up b42
- abort: cannot resolve "b42": branch "foo" has only 4 non-public changesets
+ $ hg up s42
+ abort: cannot resolve "s42": branch "foo" has only 4 non-public changesets
[255]
- $ hg up b2
+ $ hg up s2
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg summary
parent: 3:f61adbacd17a
@@ -132,7 +132,7 @@
s2@ c_d (current)
s1: c_c
s0^ c_b (base)
- $ hg up b3
+ $ hg up s3
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg stack
### target: foo (branch)
@@ -141,7 +141,7 @@
s2: c_d
s1: c_c
s0^ c_b (base)
- $ hg up b2
+ $ hg up s2
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
Also test the revset:
@@ -294,7 +294,7 @@
s2@ c_D (current)
s1: c_c
s0^ c_b (base)
- $ hg phase --public b1
+ $ hg phase --public s1
$ hg stack
### target: foo (branch) (2 heads)
s5: c_h
@@ -308,7 +308,7 @@
Check that stack doesn't show changeset with a topic
----------------------------------------------------
- $ hg topic --rev b4::b5 sometopic
+ $ hg topic --rev s4::s5 sometopic
changed topic on 2 changesets to "sometopic"
$ hg stack
### target: foo (branch)
--- a/tests/test-topic-flow-publish-bare.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-topic-flow-publish-bare.t Tue Jun 04 11:08:44 2019 +0200
@@ -294,3 +294,30 @@
|/
o 0:ea207398892e ROOT public default
+
+Checking the option to prevent publishing
+=========================================
+
+Alone the option is a bit too restrictive to be useful. However combined with
+other tooling or extensions is can become an important permission tool.
+
+ $ hg log -r 'draft()'
+ changeset: 8:858be9a8daaf
+ topic: bar
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: c_dH0
+
+ changeset: 10:abb5c84eb9e9
+ topic: bar
+ parent: 8:858be9a8daaf
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: c_dJ0
+
+ $ hg phase --public -r 8 --config experimental.topic.allow-publish=no
+ abort: rejecting publishing of changeset 858be9a8daaf
+ [255]
+ $ hg phase --public -r 10 --config experimental.topic.allow-publish=no
+ abort: rejecting publishing of changeset 858be9a8daaf and 1 others
+ [255]
--- a/tests/test-topic-stack-complex.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-topic-stack-complex.t Tue Jun 04 11:08:44 2019 +0200
@@ -142,12 +142,11 @@
move:[s3] split2
atop:[s2] split1
move:[s4] Added e and f
- working directory is now at ec94a1ed1330
$ hg up s4
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg id -r .
ec94a1ed1330 tip
- $ hg up --hidden 'min(precursors(.))'
+ $ hg up --hidden 'min(predecessors(.))'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
updated to hidden changeset f1d3649d6a8b
(hidden revision 'f1d3649d6a8b' was rewritten as: ec94a1ed1330)
@@ -173,7 +172,5 @@
merge:[s5] Added e and f
with: [s4] Added e and f
base: [3] Added e and f
- updating to "local" side of the conflict: ec94a1ed1330
- merging "other" content-divergent changeset 'f2eff98490d2'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at 8faad6276dc6
--- a/tests/test-topic-stack-data.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-topic-stack-data.t Tue Jun 04 11:08:44 2019 +0200
@@ -172,10 +172,10 @@
basic output
$ hg topic
- bar (5 changesets, 1 troubled, 2 heads)
+ bar (5 changesets, 1 unstable, 2 heads)
baz (2 changesets)
* foo (2 changesets)
- fuz (3 changesets, 2 troubled)
+ fuz (3 changesets, 2 unstable)
quiet version
@@ -188,10 +188,10 @@
verbose
$ hg topic --verbose
- bar (on branch: default, 5 changesets, 1 troubled, 2 heads)
+ bar (on branch: default, 5 changesets, 1 unstable, 2 heads)
baz (on branch: default, 2 changesets, 2 behind)
* foo (on branch: lake, 2 changesets, ambiguous destination: branch 'lake' has 2 heads)
- fuz (on branch: default, 3 changesets, 2 troubled, 1 behind)
+ fuz (on branch: default, 3 changesets, 2 unstable, 1 behind)
json
@@ -202,7 +202,7 @@
"changesetcount": 5,
"headcount": 2,
"topic": "bar",
- "troubledcount": 1
+ "unstablecount": 1
},
{
"active": false,
@@ -218,7 +218,7 @@
"active": false,
"changesetcount": 3,
"topic": "fuz",
- "troubledcount": 2
+ "unstablecount": 2
}
]
@@ -232,7 +232,7 @@
"changesetcount": 5,
"headcount": 2,
"topic": "bar",
- "troubledcount": 1
+ "unstablecount": 1
},
{
"active": false,
@@ -254,7 +254,7 @@
"branches+": "default",
"changesetcount": 3,
"topic": "fuz",
- "troubledcount": 2
+ "unstablecount": 2
}
]
--- a/tests/test-topic-stack.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-topic-stack.t Tue Jun 04 11:08:44 2019 +0200
@@ -107,105 +107,117 @@
$ hg stack -Tjson | python -m json.tool
[
{
+ "desc": "c_f",
"isentry": true,
- "topic.stack.desc": "c_f",
- "topic.stack.index": 4,
- "topic.stack.state": [
+ "node": "6559e6d93aeadba940874f54f106c61931b5b8cf",
+ "stack_index": 4,
+ "state": [
"current"
],
- "topic.stack.state.symbol": "@"
+ "symbol": "@"
},
{
+ "desc": "c_e",
"isentry": true,
- "topic.stack.desc": "c_e",
- "topic.stack.index": 3,
- "topic.stack.state": [
+ "node": "0f9ac936c87d1d991011862aff4e86d0c3300a89",
+ "stack_index": 3,
+ "state": [
"clean"
],
- "topic.stack.state.symbol": ":"
+ "symbol": ":"
},
{
+ "desc": "c_d",
"isentry": true,
- "topic.stack.desc": "c_d",
- "topic.stack.index": 2,
- "topic.stack.state": [
+ "node": "e629654d70505107cca3d12782d9c5a50d8fb9c8",
+ "stack_index": 2,
+ "state": [
"clean"
],
- "topic.stack.state.symbol": ":"
+ "symbol": ":"
},
{
+ "desc": "c_c",
"isentry": true,
- "topic.stack.desc": "c_c",
- "topic.stack.index": 1,
- "topic.stack.state": [
+ "node": "8522f9e3fee92d4ec4e688ac3fbd2ee0f8fd5036",
+ "stack_index": 1,
+ "state": [
"clean"
],
- "topic.stack.state.symbol": ":"
+ "symbol": ":"
},
{
+ "desc": "c_b",
"isentry": false,
- "topic.stack.desc": "c_b",
- "topic.stack.index": 0,
- "topic.stack.state": [
+ "node": "ea705abc4f51e26d356ed94b3443e8c19b76cedf",
+ "stack_index": 0,
+ "state": [
"base"
],
- "topic.stack.state.symbol": "^"
+ "symbol": "^"
}
]
$ hg stack -v -Tjson | python -m json.tool
[
{
+ "desc": "c_f",
"isentry": true,
- "topic.stack.desc": "c_f",
- "topic.stack.index": 4,
- "topic.stack.shortnode": "6559e6d93aea",
- "topic.stack.state": [
+ "node": "6559e6d93aeadba940874f54f106c61931b5b8cf",
+ "stack_index": 4,
+ "state": [
"current"
],
- "topic.stack.state.symbol": "@"
+ "symbol": "@"
},
{
+ "desc": "c_e",
"isentry": true,
- "topic.stack.desc": "c_e",
- "topic.stack.index": 3,
- "topic.stack.shortnode": "0f9ac936c87d",
- "topic.stack.state": [
+ "node": "0f9ac936c87d1d991011862aff4e86d0c3300a89",
+ "stack_index": 3,
+ "state": [
"clean"
],
- "topic.stack.state.symbol": ":"
+ "symbol": ":"
},
{
+ "desc": "c_d",
"isentry": true,
- "topic.stack.desc": "c_d",
- "topic.stack.index": 2,
- "topic.stack.shortnode": "e629654d7050",
- "topic.stack.state": [
+ "node": "e629654d70505107cca3d12782d9c5a50d8fb9c8",
+ "stack_index": 2,
+ "state": [
"clean"
],
- "topic.stack.state.symbol": ":"
+ "symbol": ":"
},
{
+ "desc": "c_c",
"isentry": true,
- "topic.stack.desc": "c_c",
- "topic.stack.index": 1,
- "topic.stack.shortnode": "8522f9e3fee9",
- "topic.stack.state": [
+ "node": "8522f9e3fee92d4ec4e688ac3fbd2ee0f8fd5036",
+ "stack_index": 1,
+ "state": [
"clean"
],
- "topic.stack.state.symbol": ":"
+ "symbol": ":"
},
{
+ "desc": "c_b",
"isentry": false,
- "topic.stack.desc": "c_b",
- "topic.stack.index": 0,
- "topic.stack.shortnode": "ea705abc4f51",
- "topic.stack.state": [
+ "node": "ea705abc4f51e26d356ed94b3443e8c19b76cedf",
+ "stack_index": 0,
+ "state": [
"base"
],
- "topic.stack.state.symbol": "^"
+ "symbol": "^"
}
]
+ $ hg stack -T '{rev}: [{branch}] [{topic}] {desc}\n'
+ 5: [default] [foo] c_f
+ 4: [default] [foo] c_e
+ 3: [default] [foo] c_d
+ 2: [default] [foo] c_c
+ 1: [default] [] c_b
+
check that topics and stack are available even if ui.strict=true
$ hg topics
@@ -347,13 +359,13 @@
s1: c_c
s0^ c_b (base)
$ hg topic --list --color=debug
- [topic.stack.summary.topic|### topic: [topic.active|foo]]
- [topic.stack.summary.branches|### target: default (branch)]
- [topic.stack.index topic.stack.index.orphan|s4][topic.stack.state topic.stack.state.orphan|$] [topic.stack.desc topic.stack.desc.orphan|c_f][topic.stack.state topic.stack.state.orphan| (orphan)]
- [topic.stack.index topic.stack.index.current topic.stack.index.orphan|s3][topic.stack.state topic.stack.state.current topic.stack.state.orphan|@] [topic.stack.desc topic.stack.desc.current topic.stack.desc.orphan|c_e][topic.stack.state topic.stack.state.current topic.stack.state.orphan| (current orphan)]
- [topic.stack.index topic.stack.index.clean|s2][topic.stack.state topic.stack.state.clean|:] [topic.stack.desc topic.stack.desc.clean|c_d]
- [topic.stack.index topic.stack.index.clean|s1][topic.stack.state topic.stack.state.clean|:] [topic.stack.desc topic.stack.desc.clean|c_c]
- [topic.stack.index topic.stack.index.base|s0][topic.stack.state topic.stack.state.base|^] [topic.stack.desc topic.stack.desc.base|c_b][topic.stack.state topic.stack.state.base| (base)]
+ [stack.summary.topic|### topic: [topic.active|foo]]
+ [stack.summary.branches|### target: default (branch)]
+ [stack.index stack.index.orphan|s4][stack.state stack.state.orphan|$] [stack.desc stack.desc.orphan|c_f][stack.state stack.state.orphan| (orphan)]
+ [stack.index stack.index.current stack.index.orphan|s3][stack.state stack.state.current stack.state.orphan|@] [stack.desc stack.desc.current stack.desc.orphan|c_e][stack.state stack.state.current stack.state.orphan| (current orphan)]
+ [stack.index stack.index.clean|s2][stack.state stack.state.clean|:] [stack.desc stack.desc.clean|c_d]
+ [stack.index stack.index.clean|s1][stack.state stack.state.clean|:] [stack.desc stack.desc.clean|c_c]
+ [stack.index stack.index.base|s0][stack.state stack.state.base|^] [stack.desc stack.desc.base|c_b][stack.state stack.state.base| (base)]
$ hg up s2
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -616,6 +628,22 @@
s1: c_D
s0^ c_c (base)
+ $ hg stack -v
+ ### topic: foobar
+ ### target: default (branch), 3 behind
+ s2(ea0f882ce093)@ c_e (current)
+ ^ c_h
+ s1(d2f548af67ab): c_D
+ s0(8522f9e3fee9)^ c_c (base)
+
+ $ hg stack --debug
+ ### topic: foobar
+ ### target: default (branch), 3 behind
+ s2(ea0f882ce093a2ad63db49083c5cb98a24a9470e)@ c_e (current)
+ ^ c_h
+ s1(d2f548af67ab55b08452a3e00a539319490fcd5b): c_D
+ s0(8522f9e3fee92d4ec4e688ac3fbd2ee0f8fd5036)^ c_c (base)
+
$ hg stack foo
### topic: foo
### target: default (branch), ambiguous rebase destination - topic 'foo' has 3 heads
--- a/tests/test-topic-tutorial.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-topic-tutorial.t Tue Jun 04 11:08:44 2019 +0200
@@ -1370,7 +1370,7 @@
$ hg next --evolve
move:[s2] Adding saw
atop:[s1] Adding hammer to the shopping list
- working directory now at d5c51ee5762a
+ working directory is now at d5c51ee5762a
$ hg stack
### topic: tools
@@ -1385,7 +1385,7 @@
$ hg next --evolve
move:[s3] Adding drill
atop:[s2] Adding saw
- working directory now at bae3758e46bf
+ working directory is now at bae3758e46bf
$ hg stack
### topic: tools
--- a/tests/test-topic.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-topic.t Tue Jun 04 11:08:44 2019 +0200
@@ -115,6 +115,11 @@
used, the pushed revisions are published if the push succeeds. It also applies
to common revisions selected by the push.
+ One can prevent any publishing to happens in a repository using:
+
+ [experimental]
+ topic.allow-publish = no
+
list of commands:
stack list all changesets in a topic and other information
--- a/tests/test-touch.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-touch.t Tue Jun 04 11:08:44 2019 +0200
@@ -54,7 +54,7 @@
$ hg prune 3
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- working directory now at 000000000000
+ working directory is now at 000000000000
1 changesets pruned
Duplicate
--- a/tests/test-tutorial.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-tutorial.t Tue Jun 04 11:08:44 2019 +0200
@@ -547,7 +547,7 @@
$ hg prune . # "." is for working directory parent
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory now at 41aff6a42b75
+ working directory is now at 41aff6a42b75
1 changesets pruned
The silly changeset is gone.
@@ -1379,14 +1379,13 @@
move:[13] animals
atop:[12] bathroom stuff
merging shopping
- working directory is now at 2a2b36e14660
The old version of bathroom is hidden again.
$ hg log -G
- @ 2a2b36e14660 (draft): animals
+ o 2a2b36e14660 (draft): animals
|
- o 682004e81e71 (draft): bathroom stuff
+ @ 682004e81e71 (draft): bathroom stuff
|
o 57e9caedbcb8 (public): SPAM SPAM
|
@@ -1399,6 +1398,11 @@
o 7e82d3f3c2cb (public): Monthy Python Shopping list
+And let's update to the newly evolved changeset.
+
+ $ hg update
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
#if docgraph-ext
$ hg docgraph -r "all()" --sphinx-directive --rankdir LR #rest-ignore
.. graphviz::
@@ -1524,6 +1528,7 @@
update:[8] animals
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at 2a2b36e14660
+ no troubled changesets
Relocating unstable change after prune
----------------------------------------------
@@ -1673,7 +1678,7 @@
$ hg prune 2a2b36e14660
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory now at 682004e81e71
+ working directory is now at 682004e81e71
1 changesets pruned
1 new orphan changesets
@@ -1830,7 +1835,10 @@
}
#endif
- $ hg evolve
+The --update flag of `hg evolve` automatically updates to the tipmost evolved
+changeset.
+
+ $ hg evolve --update
move:[15] SPAM SPAM SPAM
atop:[12] bathroom stuff
merging shopping
--- a/tests/test-uncommit-interactive.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-uncommit-interactive.t Tue Jun 04 11:08:44 2019 +0200
@@ -449,7 +449,7 @@
$ hg prune .
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory now at 42cc15efbec2
+ working directory is now at 42cc15efbec2
1 changesets pruned
$ hg revert --all
undeleting a
--- a/tests/test-uncommit.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-uncommit.t Tue Jun 04 11:08:44 2019 +0200
@@ -361,9 +361,9 @@
b: no such file in rev 5b27f6b17da2
[1]
-Test uncommiting precursors
+Test uncommiting predecessors
- $ hg uncommit --hidden --rev 'precursors(.)' b --traceback
+ $ hg uncommit --hidden --rev 'predecessors(.)' b --traceback
$ hg cat b --rev .
b
b
--- a/tests/test-unstability-resolution-result.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-unstability-resolution-result.t Tue Jun 04 11:08:44 2019 +0200
@@ -85,7 +85,7 @@
$ echo 'a' > a
$ hg amend
1 new orphan changesets
- $ hg evolve
+ $ hg evolve --update
move:[4] newer a
atop:[5] changea
merging a
--- a/tests/test-unstable-orphan.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-unstable-orphan.t Tue Jun 04 11:08:44 2019 +0200
@@ -65,11 +65,10 @@
$ hg evo --all --any --orphan
move:[2] add _c
atop:[3] bprime
- working directory is now at fdcf3523a74d
$ hg log -G
- @ 4:fdcf3523a74d@default(draft) add _c
+ o 4:fdcf3523a74d@default(draft) add _c
|
- o 3:36050226a9b9@default(draft) bprime
+ @ 3:36050226a9b9@default(draft) bprime
|
o 0:135f39f4bd78@default(draft) add _a
@@ -117,11 +116,10 @@
$ hg evo --all --any --orphan
move:[2] add _c
atop:[6] add bsecondsplit2
- working directory is now at 98e3f21461ff
$ hg log -G
- @ 7:98e3f21461ff@default(draft) add _c
+ o 7:98e3f21461ff@default(draft) add _c
|
- o 6:59b942dbda14@default(draft) add bsecondsplit2
+ @ 6:59b942dbda14@default(draft) add bsecondsplit2
|
o 5:8ffdae67d696@default(draft) add bsecondsplit1
|
--- a/tests/test-userguide.t Sat Jun 01 02:30:14 2019 +0200
+++ b/tests/test-userguide.t Tue Jun 04 11:08:44 2019 +0200
@@ -63,7 +63,7 @@
$ hg commit -m 'debug hack'
$ hg prune .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory now at 934359450037
+ working directory is now at 934359450037
1 changesets pruned
$ hg parents --template '{rev}:{node|short} {desc|firstline}\n'
2:934359450037 implement feature Y
@@ -122,7 +122,7 @@
~
$ hg --hidden log -q -r 'successors(05e61aab8294) | successors(be6d5bc8e4cc) | successors(35f432d9f7c1)'
9:171c6a79a27b
- $ hg --hidden log -q -r 'precursors(171c6a79a27b)'
+ $ hg --hidden log -q -r 'predecessors(171c6a79a27b)'
6:05e61aab8294
7:be6d5bc8e4cc
8:35f432d9f7c1
@@ -179,7 +179,7 @@
o 9:171c6a79a27b draft fix bug 64
|
~
- $ hg evolve -q --all
+ $ hg evolve -q --all --update
$ hg shortlog -G -r 171c6a79a27b::
@ 15:91b4b0f8b5c5 draft feature 23
|
@@ -219,7 +219,7 @@
x 17:b23d06b457a8 draft debug hack
|
~
- $ hg evolve -q --all --any
+ $ hg evolve -q --all --any --update
$ hg --hidden shortlog -G -r 1f33e68b18b9::
@ 19:4393e5877437 draft more work
|
@@ -253,7 +253,7 @@
$ hg status
M file2.c
$ hg revert file2.c
- $ hg evolve --all --any
+ $ hg evolve --all --any --update
move:[21] fix bug 67
atop:[22] fix bug 53
working directory is now at 0d972d6888e6
@@ -305,7 +305,7 @@
o 23:0d972d6888e6 draft fix bug 67
|
~
- $ hg evolve --all --any
+ $ hg evolve --all --any --update
move:[25] new feature
atop:[26] fix a bug
working directory is now at 166c1c368ab6