docs/figures/figure-sg08-a.svg
author Sushil khanchi <sushilkhanchi97@gmail.com>
Sat, 23 Nov 2019 16:17:04 +0530
branchstable
changeset 4991 2928f35023a1
parent 4937 0d1893c1044c
permissions -rw-r--r--
evolve: make sure divergence resolution doesn't undo changes (issue6203) Before this patch, in content-divergence resolution logic if resolution parent is not the parent of any of the two divergent changesets then it could undo some changes introduced by previous revs (while resolving stack of content-divergent changesets) as demonstrated by the test added in previous patch. To solve this, what this patch doing is: if divergent cset has obsolete parent with a successor then first resolve the "orphan" instability of divergent cset by relocating, then perform the content-divergence resolution. After this change in logic, I found that it's kind of more correct as reflected by the changes in tests/test-evolve-content-divergent-corner-cases.t where it prevented creating conflicts while merging. Changes in tests/test-evolve-content-divergent-stack.t demonstrate the fixed behaviour. Next patches will be covering the `evolve --continue` case for the relocation of "divergent" cset.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
 -->
<!-- Title: Mercurial graph Pages: 1 -->
<svg width="656pt" height="332pt"
 viewBox="0.00 0.00 656.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
<title>Mercurial graph</title>
<!-- 0 -->
<g id="node1" class="node">
<title>0</title>
<polygon fill="none" stroke="#000000" stroke-width="4" points="72,-324 0,-324 0,-288 72,-288 72,-324"/>
<text text-anchor="middle" x="36" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">0:0dc9</text>
</g>
<!-- 1 -->
<g id="node2" class="node">
<title>1</title>
<polygon fill="none" stroke="#000000" stroke-width="4" points="216,-324 144,-324 144,-288 216,-288 216,-324"/>
<text text-anchor="middle" x="180" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">1:7b49</text>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge1" class="edge">
<title>0&#45;&gt;1</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M72.3373,-306C90.9973,-306 113.9327,-306 133.8329,-306"/>
<polygon fill="#000000" stroke="#000000" stroke-width="2" points="133.9241,-309.5001 143.924,-306 133.924,-302.5001 133.9241,-309.5001"/>
</g>
<!-- 2 -->
<g id="node3" class="node">
<title>2</title>
<polygon fill="none" stroke="#000000" stroke-width="2" points="360,-324 288,-324 288,-288 360,-288 360,-324"/>
<text text-anchor="middle" x="324" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">2:4e96</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216.3373,-306C234.9973,-306 257.9327,-306 277.8329,-306"/>
<polygon fill="#000000" stroke="#000000" stroke-width="2" points="277.9241,-309.5001 287.924,-306 277.924,-302.5001 277.9241,-309.5001"/>
</g>
<!-- 3 -->
<g id="node4" class="node">
<title>3</title>
<polygon fill="none" stroke="#000000" stroke-width="2" points="360,-180 288,-180 288,-144 360,-144 360,-180"/>
<text text-anchor="middle" x="324" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">3:3363</text>
</g>
<!-- 1&#45;&gt;3 -->
<g id="edge3" class="edge">
<title>1&#45;&gt;3</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M198.2377,-287.7623C223.6646,-262.3354 269.8747,-216.1253 298.6431,-187.3569"/>
<polygon fill="#000000" stroke="#000000" stroke-width="2" points="301.3142,-189.6356 305.9104,-180.0896 296.3644,-184.6858 301.3142,-189.6356"/>
</g>
<!-- 4 -->
<g id="node5" class="node">
<title>4</title>
<polygon fill="none" stroke="#000000" stroke-width="2" points="504,-324 432,-324 432,-288 504,-288 504,-324"/>
<text text-anchor="middle" x="468" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">4:c7ff</text>
</g>
<!-- 1&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>1&#45;&gt;4</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216.2429,-293.0352C234.5048,-287.1762 257.1468,-280.9206 278,-278 318.4937,-272.3287 329.5063,-272.3287 370,-278 387.269,-280.4186 405.7649,-285.1243 421.984,-289.9979"/>
<polygon fill="#000000" stroke="#000000" stroke-width="2" points="421.1689,-293.4097 431.7571,-293.0352 423.2464,-286.7251 421.1689,-293.4097"/>
</g>
<!-- 5 -->
<g id="node6" class="node">
<title>5</title>
<polygon fill="none" stroke="#000000" stroke-width="2" points="504,-180 432,-180 432,-144 504,-144 504,-180"/>
<text text-anchor="middle" x="468" y="-158.3" font-family="mono" font-size="14.00" fill="#000000">5:1bb4</text>
</g>
<!-- 1&#45;&gt;5 -->
<g id="edge5" class="edge">
<title>1&#45;&gt;5</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216.1838,-287.9081C268.5617,-261.7192 365.4693,-213.2654 422.5836,-184.7082"/>
<polygon fill="#000000" stroke="#000000" stroke-width="2" points="424.3587,-187.7338 431.7377,-180.1311 421.2282,-181.4728 424.3587,-187.7338"/>
</g>
<!-- 6 -->
<g id="node7" class="node">
<title>6</title>
<polygon fill="none" stroke="#000000" stroke-width="4" points="504,-36 432,-36 432,0 504,0 504,-36"/>
<text text-anchor="middle" x="468" y="-14.3" font-family="mono" font-size="14.00" fill="#000000">6:9d21</text>
</g>
<!-- 1&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>1&#45;&gt;6</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M186.8006,-287.7418C200.0681,-254.0493 232.1707,-181.2361 278,-134 319.9081,-90.8055 381.135,-57.2385 422.6711,-37.5692"/>
<polygon fill="#000000" stroke="#000000" stroke-width="2" points="424.1521,-40.7405 431.7405,-33.3467 421.1976,-34.3945 424.1521,-40.7405"/>
</g>
<!-- 2&#45;&gt;3 -->
<g id="edge8" class="edge">
<title>2&#45;&gt;3</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M324,-279.7351C324,-250.8541 324,-205.2198 324,-180.0896"/>
<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="324" cy="-283.7623" rx="4" ry="4"/>
</g>
<!-- 7 -->
<g id="node8" class="node">
<title>7</title>
<polygon fill="none" stroke="#000000" stroke-width="4" points="648,-324 576,-324 576,-288 648,-288 648,-324"/>
<text text-anchor="middle" x="612" y="-302.3" font-family="mono" font-size="14.00" fill="#000000">7:dd15</text>
</g>
<!-- 3&#45;&gt;7 -->
<g id="edge11" class="edge">
<title>3&#45;&gt;7</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M367.5785,-183.7892C424.4025,-212.2013 522.7749,-261.3875 575.7377,-287.8689"/>
<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="363.7615" cy="-181.8808" rx="4" ry="4"/>
</g>
<!-- 4&#45;&gt;5 -->
<g id="edge9" class="edge">
<title>4&#45;&gt;5</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M468,-279.7351C468,-250.8541 468,-205.2198 468,-180.0896"/>
<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="468" cy="-283.7623" rx="4" ry="4"/>
</g>
<!-- 5&#45;&gt;6 -->
<g id="edge10" class="edge">
<title>5&#45;&gt;6</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" d="M468,-135.7351C468,-106.8541 468,-61.2198 468,-36.0896"/>
<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="468" cy="-139.7623" rx="4" ry="4"/>
</g>
<!-- 6&#45;&gt;7 -->
<g id="edge7" class="edge">
<title>6&#45;&gt;7</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M477.0078,-36.0157C501.5046,-85.0091 569.4407,-220.8814 598.5153,-279.0306"/>
<polygon fill="#000000" stroke="#000000" stroke-width="2" points="595.3929,-280.6121 602.9956,-287.9911 601.6539,-277.4816 595.3929,-280.6121"/>
</g>
</g>
</svg>