Fossil SCM
Gave Users A thru E human names, and humanized their story a bit in the branching.wiki article.
Commit
2ac5bc3c3000288b9660a8b06393a6a2830a126b3f412e81f1c04987a7bb0cac
Parent
856c95654b3b3fa…
3 files changed
+4
-4
+15
-15
+36
-27
+4
-4
| --- www/branch06.graphml | ||
| +++ www/branch06.graphml | ||
| @@ -19,14 +19,14 @@ | ||
| 19 | 19 | <y:TableNode configuration="YED_TABLE_NODE"> |
| 20 | 20 | <y:Geometry height="470.0" width="487.0" x="-208.0" y="-1933.666015625"/> |
| 21 | 21 | <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/> |
| 22 | 22 | <y:BorderStyle color="#000000" type="line" width="1.0"/> |
| 23 | 23 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="290.259765625" x="98.3701171875" xml:space="preserve" y="4.0">Varying User Views of Fossil Repository</y:NodeLabel> |
| 24 | - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.103515625" x="3.0" xml:space="preserve" y="63.9482421875">User A<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel> | |
| 25 | - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="40.7265625" x="3.0" xml:space="preserve" y="174.63671875">User B<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel> | |
| 26 | - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.126953125" x="3.0" xml:space="preserve" y="283.4365234375">User C<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_2" inside="true"/></y:ModelParameter></y:NodeLabel> | |
| 27 | - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.8125" x="3.0" xml:space="preserve" y="393.09375">User D<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_3" inside="true"/></y:ModelParameter></y:NodeLabel> | |
| 24 | + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="29.822265625" x="3.0" xml:space="preserve" y="70.0888671875">Alan<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel> | |
| 25 | + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="32.833984375" x="3.0" xml:space="preserve" y="178.5830078125">Betty<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel> | |
| 26 | + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="44.91015625" x="3.0" xml:space="preserve" y="282.044921875">Charlie<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_2" inside="true"/></y:ModelParameter></y:NodeLabel> | |
| 27 | + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="48.8125" x="3.0" xml:space="preserve" y="390.09375">Darlene<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_3" inside="true"/></y:ModelParameter></y:NodeLabel> | |
| 28 | 28 | <y:StyleProperties> |
| 29 | 29 | <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/> |
| 30 | 30 | <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/> |
| 31 | 31 | <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/> |
| 32 | 32 | <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/> |
| 33 | 33 |
| --- www/branch06.graphml | |
| +++ www/branch06.graphml | |
| @@ -19,14 +19,14 @@ | |
| 19 | <y:TableNode configuration="YED_TABLE_NODE"> |
| 20 | <y:Geometry height="470.0" width="487.0" x="-208.0" y="-1933.666015625"/> |
| 21 | <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/> |
| 22 | <y:BorderStyle color="#000000" type="line" width="1.0"/> |
| 23 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="290.259765625" x="98.3701171875" xml:space="preserve" y="4.0">Varying User Views of Fossil Repository</y:NodeLabel> |
| 24 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.103515625" x="3.0" xml:space="preserve" y="63.9482421875">User A<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel> |
| 25 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="40.7265625" x="3.0" xml:space="preserve" y="174.63671875">User B<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel> |
| 26 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.126953125" x="3.0" xml:space="preserve" y="283.4365234375">User C<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_2" inside="true"/></y:ModelParameter></y:NodeLabel> |
| 27 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.8125" x="3.0" xml:space="preserve" y="393.09375">User D<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_3" inside="true"/></y:ModelParameter></y:NodeLabel> |
| 28 | <y:StyleProperties> |
| 29 | <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/> |
| 30 | <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/> |
| 31 | <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/> |
| 32 | <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/> |
| 33 |
| --- www/branch06.graphml | |
| +++ www/branch06.graphml | |
| @@ -19,14 +19,14 @@ | |
| 19 | <y:TableNode configuration="YED_TABLE_NODE"> |
| 20 | <y:Geometry height="470.0" width="487.0" x="-208.0" y="-1933.666015625"/> |
| 21 | <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/> |
| 22 | <y:BorderStyle color="#000000" type="line" width="1.0"/> |
| 23 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="290.259765625" x="98.3701171875" xml:space="preserve" y="4.0">Varying User Views of Fossil Repository</y:NodeLabel> |
| 24 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="29.822265625" x="3.0" xml:space="preserve" y="70.0888671875">Alan<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel> |
| 25 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="32.833984375" x="3.0" xml:space="preserve" y="178.5830078125">Betty<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel> |
| 26 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="44.91015625" x="3.0" xml:space="preserve" y="282.044921875">Charlie<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_2" inside="true"/></y:ModelParameter></y:NodeLabel> |
| 27 | <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="48.8125" x="3.0" xml:space="preserve" y="390.09375">Darlene<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_3" inside="true"/></y:ModelParameter></y:NodeLabel> |
| 28 | <y:StyleProperties> |
| 29 | <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/> |
| 30 | <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/> |
| 31 | <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/> |
| 32 | <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/> |
| 33 |
+15
-15
| --- www/branch06.svg | ||
| +++ www/branch06.svg | ||
| @@ -8,20 +8,20 @@ | ||
| 8 | 8 | </clipPath> |
| 9 | 9 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> |
| 10 | 10 | <path d="M-223 -1949 L294 -1949 L294 -1448 L-223 -1448 L-223 -1949 Z"/> |
| 11 | 11 | </clipPath> |
| 12 | 12 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> |
| 13 | - <path d="M121.3857 -18 L121.3857 499 L-379.6143 499 L-379.6143 -18 L121.3857 -18 Z"/> | |
| 13 | + <path d="M115.2451 -18 L115.2451 499 L-385.7549 499 L-385.7549 -18 L115.2451 -18 Z"/> | |
| 14 | 14 | </clipPath> |
| 15 | 15 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> |
| 16 | - <path d="M230.6973 -18 L230.6973 499 L-270.3027 499 L-270.3027 -18 L230.6973 -18 Z"/> | |
| 16 | + <path d="M226.751 -18 L226.751 499 L-274.249 499 L-274.249 -18 L226.751 -18 Z"/> | |
| 17 | 17 | </clipPath> |
| 18 | 18 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> |
| 19 | - <path d="M340.8975 -18 L340.8975 499 L-160.1025 499 L-160.1025 -18 L340.8975 -18 Z"/> | |
| 19 | + <path d="M342.2891 -18 L342.2891 499 L-158.7109 499 L-158.7109 -18 L342.2891 -18 Z"/> | |
| 20 | 20 | </clipPath> |
| 21 | 21 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> |
| 22 | - <path d="M451.2402 -18 L451.2402 499 L-49.7598 499 L-49.7598 -18 L451.2402 -18 Z"/> | |
| 22 | + <path d="M454.2402 -18 L454.2402 499 L-46.7598 499 L-46.7598 -18 L454.2402 -18 Z"/> | |
| 23 | 23 | </clipPath> |
| 24 | 24 | </defs> |
| 25 | 25 | <g fill="rgb(236,245,255)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="rgb(236,245,255)"> |
| 26 | 26 | <path d="M-208 -1933.666 L-208 -1903.666 L279 -1903.666 L279 -1933.666 Z" stroke="none" clip-path="url(#clipPath2)"/> |
| 27 | 27 | <rect x="-208" width="487" height="440" y="-1903.666" clip-path="url(#clipPath2)" stroke="none"/> |
| @@ -44,21 +44,21 @@ | ||
| 44 | 44 | <rect fill="none" x="-208" width="487" height="111" y="-1574.666" clip-path="url(#clipPath2)"/> |
| 45 | 45 | </g> |
| 46 | 46 | <g font-size="15px" stroke-linecap="butt" transform="matrix(1,0,0,1,223,1949)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> |
| 47 | 47 | <text x="-107.6299" xml:space="preserve" y="-1913.1641" clip-path="url(#clipPath2)" stroke="none">Varying User Views of Fossil Repository</text> |
| 48 | 48 | </g> |
| 49 | - <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,121.3857)" stroke-linecap="butt"> | |
| 50 | - <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath3)" stroke="none">User A</text> | |
| 51 | - </g> | |
| 52 | - <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,230.6973)" stroke-linecap="butt"> | |
| 53 | - <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath4)" stroke="none">User B</text> | |
| 54 | - </g> | |
| 55 | - <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,340.8975)" stroke-linecap="butt"> | |
| 56 | - <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath5)" stroke="none">User C</text> | |
| 57 | - </g> | |
| 58 | - <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,451.2402)" stroke-linecap="butt"> | |
| 59 | - <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath6)" stroke="none">User D</text> | |
| 49 | + <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,115.2451)" stroke-linecap="butt"> | |
| 50 | + <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath3)" stroke="none">Alan</text> | |
| 51 | + </g> | |
| 52 | + <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,226.751)" stroke-linecap="butt"> | |
| 53 | + <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath4)" stroke="none">Betty</text> | |
| 54 | + </g> | |
| 55 | + <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,342.2891)" stroke-linecap="butt"> | |
| 56 | + <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath5)" stroke="none">Charlie</text> | |
| 57 | + </g> | |
| 58 | + <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,454.2402)" stroke-linecap="butt"> | |
| 59 | + <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath6)" stroke="none">Darlene</text> | |
| 60 | 60 | </g> |
| 61 | 61 | <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white"> |
| 62 | 62 | <circle r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1760.666" stroke="none"/> |
| 63 | 63 | </g> |
| 64 | 64 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt"> |
| 65 | 65 |
| --- www/branch06.svg | |
| +++ www/branch06.svg | |
| @@ -8,20 +8,20 @@ | |
| 8 | </clipPath> |
| 9 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> |
| 10 | <path d="M-223 -1949 L294 -1949 L294 -1448 L-223 -1448 L-223 -1949 Z"/> |
| 11 | </clipPath> |
| 12 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> |
| 13 | <path d="M121.3857 -18 L121.3857 499 L-379.6143 499 L-379.6143 -18 L121.3857 -18 Z"/> |
| 14 | </clipPath> |
| 15 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> |
| 16 | <path d="M230.6973 -18 L230.6973 499 L-270.3027 499 L-270.3027 -18 L230.6973 -18 Z"/> |
| 17 | </clipPath> |
| 18 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> |
| 19 | <path d="M340.8975 -18 L340.8975 499 L-160.1025 499 L-160.1025 -18 L340.8975 -18 Z"/> |
| 20 | </clipPath> |
| 21 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> |
| 22 | <path d="M451.2402 -18 L451.2402 499 L-49.7598 499 L-49.7598 -18 L451.2402 -18 Z"/> |
| 23 | </clipPath> |
| 24 | </defs> |
| 25 | <g fill="rgb(236,245,255)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="rgb(236,245,255)"> |
| 26 | <path d="M-208 -1933.666 L-208 -1903.666 L279 -1903.666 L279 -1933.666 Z" stroke="none" clip-path="url(#clipPath2)"/> |
| 27 | <rect x="-208" width="487" height="440" y="-1903.666" clip-path="url(#clipPath2)" stroke="none"/> |
| @@ -44,21 +44,21 @@ | |
| 44 | <rect fill="none" x="-208" width="487" height="111" y="-1574.666" clip-path="url(#clipPath2)"/> |
| 45 | </g> |
| 46 | <g font-size="15px" stroke-linecap="butt" transform="matrix(1,0,0,1,223,1949)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> |
| 47 | <text x="-107.6299" xml:space="preserve" y="-1913.1641" clip-path="url(#clipPath2)" stroke="none">Varying User Views of Fossil Repository</text> |
| 48 | </g> |
| 49 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,121.3857)" stroke-linecap="butt"> |
| 50 | <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath3)" stroke="none">User A</text> |
| 51 | </g> |
| 52 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,230.6973)" stroke-linecap="butt"> |
| 53 | <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath4)" stroke="none">User B</text> |
| 54 | </g> |
| 55 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,340.8975)" stroke-linecap="butt"> |
| 56 | <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath5)" stroke="none">User C</text> |
| 57 | </g> |
| 58 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,451.2402)" stroke-linecap="butt"> |
| 59 | <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath6)" stroke="none">User D</text> |
| 60 | </g> |
| 61 | <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white"> |
| 62 | <circle r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1760.666" stroke="none"/> |
| 63 | </g> |
| 64 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt"> |
| 65 |
| --- www/branch06.svg | |
| +++ www/branch06.svg | |
| @@ -8,20 +8,20 @@ | |
| 8 | </clipPath> |
| 9 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> |
| 10 | <path d="M-223 -1949 L294 -1949 L294 -1448 L-223 -1448 L-223 -1949 Z"/> |
| 11 | </clipPath> |
| 12 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> |
| 13 | <path d="M115.2451 -18 L115.2451 499 L-385.7549 499 L-385.7549 -18 L115.2451 -18 Z"/> |
| 14 | </clipPath> |
| 15 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> |
| 16 | <path d="M226.751 -18 L226.751 499 L-274.249 499 L-274.249 -18 L226.751 -18 Z"/> |
| 17 | </clipPath> |
| 18 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> |
| 19 | <path d="M342.2891 -18 L342.2891 499 L-158.7109 499 L-158.7109 -18 L342.2891 -18 Z"/> |
| 20 | </clipPath> |
| 21 | <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> |
| 22 | <path d="M454.2402 -18 L454.2402 499 L-46.7598 499 L-46.7598 -18 L454.2402 -18 Z"/> |
| 23 | </clipPath> |
| 24 | </defs> |
| 25 | <g fill="rgb(236,245,255)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="rgb(236,245,255)"> |
| 26 | <path d="M-208 -1933.666 L-208 -1903.666 L279 -1903.666 L279 -1933.666 Z" stroke="none" clip-path="url(#clipPath2)"/> |
| 27 | <rect x="-208" width="487" height="440" y="-1903.666" clip-path="url(#clipPath2)" stroke="none"/> |
| @@ -44,21 +44,21 @@ | |
| 44 | <rect fill="none" x="-208" width="487" height="111" y="-1574.666" clip-path="url(#clipPath2)"/> |
| 45 | </g> |
| 46 | <g font-size="15px" stroke-linecap="butt" transform="matrix(1,0,0,1,223,1949)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> |
| 47 | <text x="-107.6299" xml:space="preserve" y="-1913.1641" clip-path="url(#clipPath2)" stroke="none">Varying User Views of Fossil Repository</text> |
| 48 | </g> |
| 49 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,115.2451)" stroke-linecap="butt"> |
| 50 | <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath3)" stroke="none">Alan</text> |
| 51 | </g> |
| 52 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,226.751)" stroke-linecap="butt"> |
| 53 | <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath4)" stroke="none">Betty</text> |
| 54 | </g> |
| 55 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,342.2891)" stroke-linecap="butt"> |
| 56 | <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath5)" stroke="none">Charlie</text> |
| 57 | </g> |
| 58 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,454.2402)" stroke-linecap="butt"> |
| 59 | <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath6)" stroke="none">Darlene</text> |
| 60 | </g> |
| 61 | <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white"> |
| 62 | <circle r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1760.666" stroke="none"/> |
| 63 | </g> |
| 64 | <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt"> |
| 65 |
+36
-27
| --- www/branching.wiki | ||
| +++ www/branching.wiki | ||
| @@ -388,53 +388,62 @@ | ||
| 388 | 388 | indefinite, unified future. This is all happening on some long-lived, |
| 389 | 389 | shared working branch, such as trunk, though it could be anything else |
| 390 | 390 | that matches those same qualifiers. Each user makes only one check-in, |
| 391 | 391 | shaded light gray. |
| 392 | 392 | |
| 393 | -User A sets the stage for this problem by creating a fork from check-in | |
| 394 | -1 as check-in 3. Whether what happens as a result is User A's fault | |
| 395 | -depends on why and how that fork occurred. We'll come back to that | |
| 396 | -point later. For now, you can ignore the how and why of it. | |
| 393 | +Alan sets the stage for this problem by creating a fork from check-in 1 | |
| 394 | +as check-in 3. This has consequences which will occur regardless of how | |
| 395 | +that fork was created, so we can ignore the "how" here. <i>Why</i> that | |
| 396 | +fork was created will matter in [#post-mortem|the <i>post mortem</i> | |
| 397 | +below], but we can ignore that for now, too. | |
| 397 | 398 | |
| 398 | -User B is sync'd with the same view of the repository as User A, so her | |
| 399 | -check-in goes in as a child of the forked check-in 3, that being the | |
| 399 | +Betty is sync'd with the same view of the repository as Alan, so her | |
| 400 | +check-in goes in as a child of the fork-creating check-in 3, that being the | |
| 400 | 401 | latest check-in on the branch at the time. |
| 401 | 402 | |
| 402 | -Meanwhile, User C went offline after syncing his repo with check-in 2 as | |
| 403 | +Meanwhile, Charlie went offline after syncing his repo with check-in 2 as | |
| 403 | 404 | the latest on that branch. When he checks his changes in, it is as a |
| 404 | -child of 2, not of 4, because User C doesn't know about 3 & 4 yet. Since | |
| 405 | -he does this at an absolute wall clock time <i>after</i> Users A and B | |
| 406 | -made their check-ins, when User C comes back online and pushes his | |
| 407 | -changes to the master repository — and learns about check-ins 3 and 4 at | |
| 408 | -the same time, during Fossil sync — User C inadvertently revives the | |
| 405 | +child of 2, not of 4, because Charlie doesn't know about check-ins 3 & 4 yet. | |
| 406 | +He does this at an absolute wall clock time <i>after</i> Alan and Betty | |
| 407 | +made their check-ins, so when Charlie comes back online and pushes his | |
| 408 | +check-in 5 to the master repository and learns about check-ins 3 and 4 | |
| 409 | +during Fossil sync, Charlie inadvertently revives the | |
| 409 | 410 | other side of the fork. |
| 410 | 411 | |
| 411 | -User D sees all of this, because she comes along after Users A thru C | |
| 412 | +Darlene sees all of this, because she comes along after Alan, Betty, and Charlie | |
| 412 | 413 | made their check-ins and pushed them to the master repository. Perhaps |
| 413 | -User D is switching a working directory to this forked branch, or | |
| 414 | -perhaps User D is opening a Fossil repo clone into a new working | |
| 415 | -directory. Regardless, it happens after User C pushed his check-in 5 to | |
| 416 | -the master repo, so User D sees that as the latest on the branch, | |
| 414 | +Darlene is switching a working directory to this forked branch, or | |
| 415 | +perhaps Darlene is opening a Fossil repo clone into a new working | |
| 416 | +directory. Regardless, it happens after Charlie pushed his check-in 5 to | |
| 417 | +the master repo, so Darlene sees that as the latest on the branch, | |
| 417 | 418 | causing her work to be saved as a child of check-in 5, not of check-in |
| 418 | -4, as it would if User C didn't come back online and sync before User D | |
| 419 | +4, as it would if Charlie didn't come back online and sync before Darlene | |
| 419 | 420 | showed up. |
| 421 | + | |
| 422 | +<h3 id="post-mortem">Post Mortem</h3> | |
| 420 | 423 | |
| 421 | 424 | The end result of all of this is that everyone makes only one check-in, |
| 422 | 425 | but half of the check-ins are on one side of the fork, and half are on |
| 423 | -the other. Some future User E who shows up can end up on either side of | |
| 424 | -the fork. If User E shows up with the state of the repository as drawn | |
| 425 | -above, they'll end up on the top side of the fork, because check-in 6 is | |
| 426 | -the latest, but if User A or B makes a seventh check-in to that branch | |
| 427 | -first, it will be as a child of check-in 4, and because it's the latest, | |
| 428 | -User E will end up on the bottom side of the fork instead. | |
| 426 | +the other. A future user — his mother calls him Edward, but please call him Eddie — | |
| 427 | +can then show up and end up on <i>either</i> side of | |
| 428 | +the fork. If Eddie shows up with the state of the repository as drawn | |
| 429 | +above, he'll end up on the top side of the fork, because check-in 6 is | |
| 430 | +the latest, but if Alan or Betty makes a seventh check-in to that branch | |
| 431 | +first, it will be as a child of check-in 4 since that's the version in | |
| 432 | +their local check-out directories. Since that check-in 7 will then be the latest, | |
| 433 | +Eddie will end up on the bottom side of the fork instead. | |
| 429 | 434 | |
| 430 | 435 | In all of this, realize that neither side of the fork is obviously |
| 431 | 436 | "correct." Every participant was doing the right thing by their own |
| 432 | -lights at the time they made their lone check-in. We can only blame User | |
| 433 | -A for creating the fork if they did so on purpose, as by passing | |
| 437 | +lights at the time they made their lone check-in. We can only blame | |
| 438 | +the consequences of creating the fork on Alan | |
| 439 | +if he did so on purpose, as by passing | |
| 434 | 440 | "--allow-fork" when creating a check-in on a shared working branch. If |
| 435 | -the fork was created inadvertently, it's no one's fault. | |
| 441 | +the fork was created inadvertently, it's no one's fault. | |
| 442 | + | |
| 443 | +(Or, perhaps it is <i>everyone's</i> fault for using a DVCS while having | |
| 444 | +an unrealistic expectation that forks should never occur.) | |
| 436 | 445 | |
| 437 | 446 | This is why forks on shared working branches are bad, which is why |
| 438 | 447 | Fossil tries so hard to avoid them, and why it warns you about it when |
| 439 | 448 | they do occur. |
| 440 | 449 | |
| 441 | 450 |
| --- www/branching.wiki | |
| +++ www/branching.wiki | |
| @@ -388,53 +388,62 @@ | |
| 388 | indefinite, unified future. This is all happening on some long-lived, |
| 389 | shared working branch, such as trunk, though it could be anything else |
| 390 | that matches those same qualifiers. Each user makes only one check-in, |
| 391 | shaded light gray. |
| 392 | |
| 393 | User A sets the stage for this problem by creating a fork from check-in |
| 394 | 1 as check-in 3. Whether what happens as a result is User A's fault |
| 395 | depends on why and how that fork occurred. We'll come back to that |
| 396 | point later. For now, you can ignore the how and why of it. |
| 397 | |
| 398 | User B is sync'd with the same view of the repository as User A, so her |
| 399 | check-in goes in as a child of the forked check-in 3, that being the |
| 400 | latest check-in on the branch at the time. |
| 401 | |
| 402 | Meanwhile, User C went offline after syncing his repo with check-in 2 as |
| 403 | the latest on that branch. When he checks his changes in, it is as a |
| 404 | child of 2, not of 4, because User C doesn't know about 3 & 4 yet. Since |
| 405 | he does this at an absolute wall clock time <i>after</i> Users A and B |
| 406 | made their check-ins, when User C comes back online and pushes his |
| 407 | changes to the master repository — and learns about check-ins 3 and 4 at |
| 408 | the same time, during Fossil sync — User C inadvertently revives the |
| 409 | other side of the fork. |
| 410 | |
| 411 | User D sees all of this, because she comes along after Users A thru C |
| 412 | made their check-ins and pushed them to the master repository. Perhaps |
| 413 | User D is switching a working directory to this forked branch, or |
| 414 | perhaps User D is opening a Fossil repo clone into a new working |
| 415 | directory. Regardless, it happens after User C pushed his check-in 5 to |
| 416 | the master repo, so User D sees that as the latest on the branch, |
| 417 | causing her work to be saved as a child of check-in 5, not of check-in |
| 418 | 4, as it would if User C didn't come back online and sync before User D |
| 419 | showed up. |
| 420 | |
| 421 | The end result of all of this is that everyone makes only one check-in, |
| 422 | but half of the check-ins are on one side of the fork, and half are on |
| 423 | the other. Some future User E who shows up can end up on either side of |
| 424 | the fork. If User E shows up with the state of the repository as drawn |
| 425 | above, they'll end up on the top side of the fork, because check-in 6 is |
| 426 | the latest, but if User A or B makes a seventh check-in to that branch |
| 427 | first, it will be as a child of check-in 4, and because it's the latest, |
| 428 | User E will end up on the bottom side of the fork instead. |
| 429 | |
| 430 | In all of this, realize that neither side of the fork is obviously |
| 431 | "correct." Every participant was doing the right thing by their own |
| 432 | lights at the time they made their lone check-in. We can only blame User |
| 433 | A for creating the fork if they did so on purpose, as by passing |
| 434 | "--allow-fork" when creating a check-in on a shared working branch. If |
| 435 | the fork was created inadvertently, it's no one's fault. |
| 436 | |
| 437 | This is why forks on shared working branches are bad, which is why |
| 438 | Fossil tries so hard to avoid them, and why it warns you about it when |
| 439 | they do occur. |
| 440 | |
| 441 |
| --- www/branching.wiki | |
| +++ www/branching.wiki | |
| @@ -388,53 +388,62 @@ | |
| 388 | indefinite, unified future. This is all happening on some long-lived, |
| 389 | shared working branch, such as trunk, though it could be anything else |
| 390 | that matches those same qualifiers. Each user makes only one check-in, |
| 391 | shaded light gray. |
| 392 | |
| 393 | Alan sets the stage for this problem by creating a fork from check-in 1 |
| 394 | as check-in 3. This has consequences which will occur regardless of how |
| 395 | that fork was created, so we can ignore the "how" here. <i>Why</i> that |
| 396 | fork was created will matter in [#post-mortem|the <i>post mortem</i> |
| 397 | below], but we can ignore that for now, too. |
| 398 | |
| 399 | Betty is sync'd with the same view of the repository as Alan, so her |
| 400 | check-in goes in as a child of the fork-creating check-in 3, that being the |
| 401 | latest check-in on the branch at the time. |
| 402 | |
| 403 | Meanwhile, Charlie went offline after syncing his repo with check-in 2 as |
| 404 | the latest on that branch. When he checks his changes in, it is as a |
| 405 | child of 2, not of 4, because Charlie doesn't know about check-ins 3 & 4 yet. |
| 406 | He does this at an absolute wall clock time <i>after</i> Alan and Betty |
| 407 | made their check-ins, so when Charlie comes back online and pushes his |
| 408 | check-in 5 to the master repository and learns about check-ins 3 and 4 |
| 409 | during Fossil sync, Charlie inadvertently revives the |
| 410 | other side of the fork. |
| 411 | |
| 412 | Darlene sees all of this, because she comes along after Alan, Betty, and Charlie |
| 413 | made their check-ins and pushed them to the master repository. Perhaps |
| 414 | Darlene is switching a working directory to this forked branch, or |
| 415 | perhaps Darlene is opening a Fossil repo clone into a new working |
| 416 | directory. Regardless, it happens after Charlie pushed his check-in 5 to |
| 417 | the master repo, so Darlene sees that as the latest on the branch, |
| 418 | causing her work to be saved as a child of check-in 5, not of check-in |
| 419 | 4, as it would if Charlie didn't come back online and sync before Darlene |
| 420 | showed up. |
| 421 | |
| 422 | <h3 id="post-mortem">Post Mortem</h3> |
| 423 | |
| 424 | The end result of all of this is that everyone makes only one check-in, |
| 425 | but half of the check-ins are on one side of the fork, and half are on |
| 426 | the other. A future user — his mother calls him Edward, but please call him Eddie — |
| 427 | can then show up and end up on <i>either</i> side of |
| 428 | the fork. If Eddie shows up with the state of the repository as drawn |
| 429 | above, he'll end up on the top side of the fork, because check-in 6 is |
| 430 | the latest, but if Alan or Betty makes a seventh check-in to that branch |
| 431 | first, it will be as a child of check-in 4 since that's the version in |
| 432 | their local check-out directories. Since that check-in 7 will then be the latest, |
| 433 | Eddie will end up on the bottom side of the fork instead. |
| 434 | |
| 435 | In all of this, realize that neither side of the fork is obviously |
| 436 | "correct." Every participant was doing the right thing by their own |
| 437 | lights at the time they made their lone check-in. We can only blame |
| 438 | the consequences of creating the fork on Alan |
| 439 | if he did so on purpose, as by passing |
| 440 | "--allow-fork" when creating a check-in on a shared working branch. If |
| 441 | the fork was created inadvertently, it's no one's fault. |
| 442 | |
| 443 | (Or, perhaps it is <i>everyone's</i> fault for using a DVCS while having |
| 444 | an unrealistic expectation that forks should never occur.) |
| 445 | |
| 446 | This is why forks on shared working branches are bad, which is why |
| 447 | Fossil tries so hard to avoid them, and why it warns you about it when |
| 448 | they do occur. |
| 449 | |
| 450 |