Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
64e8271
docs: add bare repositories recipe to playbook
braboj Apr 26, 2026
dbf62ad
docs: flatten bare/non-bare headings into section flow
braboj Apr 26, 2026
044a643
docs: explain why bare repos exist and why pushing to non-bare fails
braboj Apr 26, 2026
7ea2d73
docs: remove forward references from bare/non-bare explanation
braboj Apr 26, 2026
bf9f555
docs: step-by-step explanation of why pushing to non-bare fails
braboj Apr 26, 2026
d91bc08
docs: clarify push-to-non-bare explanation
braboj Apr 26, 2026
ea296d4
docs: clarify direct push scenario in bare repo recipe
braboj Apr 26, 2026
5a73524
docs: clarify no-bare-repo setup in push scenario
braboj Apr 26, 2026
a92a9c2
docs: add bare repo motivation with before/after diagrams
braboj Apr 26, 2026
74cb19a
docs: fix typos and add push-rejection line in bare repo section
braboj Apr 26, 2026
00e49ca
docs: simplify bare repo explanation for undergrad clarity
braboj Apr 26, 2026
821c7f0
docs: restore push/pull terminology in bare repo section
braboj Apr 26, 2026
0ecb23e
docs: clarify that silent revert has no error or warning
braboj Apr 26, 2026
cc7df7d
docs: add ASCII diagram showing silent revert of Bob's changes
braboj Apr 26, 2026
05b286e
Revert "docs: add ASCII diagram showing silent revert of Bob's changes"
braboj Apr 26, 2026
0f7372a
docs: add draw.io diagram for silent overwrite of commit B
braboj Apr 26, 2026
de362ad
docs: fix overwrite diagram — all commit cards gray
braboj Apr 26, 2026
b8defbd
docs: rebuild before/after draw.io diagrams
braboj Apr 26, 2026
068c85d
docs: export PNGs and replace ASCII diagrams with images
braboj Apr 26, 2026
cccb207
docs: add overwrite diagram after silent revert explanation
braboj Apr 26, 2026
91f6ee1
docs: explain core.bare flag as the protection mechanism
braboj Apr 26, 2026
d63e2ab
docs: show core.bare flag in config file dump
braboj Apr 26, 2026
aa070aa
docs: invert core.bare explanation — lead with false rejects push
braboj Apr 26, 2026
8b276e1
docs: add H3 heading for core.bare flag section
braboj Apr 26, 2026
03e75f5
docs: fix direction of overwrite — Alice overwrites Bob, not vice versa
braboj Apr 26, 2026
ad4531b
docs: polish repository section — trailing spaces, repetition, wording
braboj Apr 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions assets/drawio/git-bare-after.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<mxfile host="Electron">
<diagram id="bare-after" name="After — bare repo as hub">
<mxGraphModel dx="1094" dy="700" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="780" pageHeight="340" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="bg-card" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;arcSize=5;" value="" vertex="1">
<mxGeometry height="320" width="760" x="10" y="10" as="geometry" />
</mxCell>

<!-- Alice zone -->
<mxCell id="zone-alice" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FAF4E8;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;arcSize=5;" value="" vertex="1">
<mxGeometry height="270" width="200" x="30" y="30" as="geometry" />
</mxCell>
<mxCell id="label-alice" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=12;fontStyle=1;fontColor=#2C2C2A;fontFamily=Helvetica;" value="Alice (non-bare)" vertex="1">
<mxGeometry height="20" width="150" x="40" y="35" as="geometry" />
</mxCell>
<mxCell id="box-alice-wt" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#2563EB;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=1;fontColor=#1E40AF;fontFamily=Helvetica;verticalAlign=middle;align=center;arcSize=10;" value="Working&lt;br&gt;Tree" vertex="1">
<mxGeometry height="70" width="160" x="50" y="65" as="geometry" />
</mxCell>
<mxCell id="box-alice-git" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F1F1;strokeColor=#888888;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=1;fontColor=#2C2C2A;fontFamily=Helvetica;verticalAlign=middle;align=center;arcSize=10;" value=".git/" vertex="1">
<mxGeometry height="70" width="160" x="50" y="155" as="geometry" />
</mxCell>

<!-- Shared hub zone -->
<mxCell id="zone-bare" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#EAF1F5;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;arcSize=5;" value="" vertex="1">
<mxGeometry height="270" width="210" x="280" y="30" as="geometry" />
</mxCell>
<mxCell id="label-bare" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=12;fontStyle=1;fontColor=#2C2C2A;fontFamily=Helvetica;" value="Shared hub (bare)" vertex="1">
<mxGeometry height="20" width="160" x="290" y="35" as="geometry" />
</mxCell>
<mxCell id="box-bare" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F1F1;strokeColor=#888888;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=1;fontColor=#2C2C2A;fontFamily=Helvetica;verticalAlign=middle;align=center;arcSize=10;" value="objects + refs&lt;br&gt;&lt;i style=&quot;font-weight:normal;color:#5F5E5A&quot;&gt;no working tree&lt;/i&gt;" vertex="1">
<mxGeometry height="70" width="170" x="300" y="120" as="geometry" />
</mxCell>

<!-- Bob zone -->
<mxCell id="zone-bob" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FAF4E8;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;arcSize=5;" value="" vertex="1">
<mxGeometry height="270" width="200" x="540" y="30" as="geometry" />
</mxCell>
<mxCell id="label-bob" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=12;fontStyle=1;fontColor=#2C2C2A;fontFamily=Helvetica;" value="Bob (non-bare)" vertex="1">
<mxGeometry height="20" width="150" x="550" y="35" as="geometry" />
</mxCell>
<mxCell id="box-bob-wt" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#2563EB;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=1;fontColor=#1E40AF;fontFamily=Helvetica;verticalAlign=middle;align=center;arcSize=10;" value="Working&lt;br&gt;Tree" vertex="1">
<mxGeometry height="70" width="160" x="560" y="65" as="geometry" />
</mxCell>
<mxCell id="box-bob-git" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F1F1;strokeColor=#888888;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=1;fontColor=#2C2C2A;fontFamily=Helvetica;verticalAlign=middle;align=center;arcSize=10;" value=".git/" vertex="1">
<mxGeometry height="70" width="160" x="560" y="155" as="geometry" />
</mxCell>

<!-- Push arrow (Bob → bare) -->
<mxCell id="arr-bob-push" edge="1" parent="1" source="box-bob-git" style="endArrow=classic;html=1;strokeColor=#444441;strokeWidth=1;endFill=1;endSize=6;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" target="box-bare" vertex="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="label-bob-push" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=bottom;fontSize=11;fontStyle=0;fontColor=#2C2C2A;fontFamily=Courier New;" value="push" vertex="1">
<mxGeometry height="18" width="50" x="490" y="172" as="geometry" />
</mxCell>

<!-- Pull arrow (bare → Alice) -->
<mxCell id="arr-alice-pull" edge="1" parent="1" source="box-bare" style="endArrow=classic;html=1;strokeColor=#444441;strokeWidth=1;endFill=1;endSize=6;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="box-alice-git" vertex="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="label-alice-pull" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=bottom;fontSize=11;fontStyle=0;fontColor=#2C2C2A;fontFamily=Courier New;" value="pull" vertex="1">
<mxGeometry height="18" width="50" x="240" y="140" as="geometry" />
</mxCell>
<mxCell id="label-alice-ready" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=11;fontStyle=2;fontColor=#5F5E5A;fontFamily=Helvetica;" value="(when ready)" vertex="1">
<mxGeometry height="18" width="80" x="235" y="155" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
54 changes: 54 additions & 0 deletions assets/drawio/git-bare-before.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<mxfile host="Electron">
<diagram id="bare-before" name="Before — direct push">
<mxGraphModel dx="1094" dy="700" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="700" pageHeight="360" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="bg-card" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;arcSize=5;" value="" vertex="1">
<mxGeometry height="340" width="680" x="10" y="10" as="geometry" />
</mxCell>

<!-- Alice zone -->
<mxCell id="zone-alice" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FAF4E8;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;arcSize=5;" value="" vertex="1">
<mxGeometry height="280" width="270" x="30" y="30" as="geometry" />
</mxCell>
<mxCell id="label-alice" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=12;fontStyle=1;fontColor=#2C2C2A;fontFamily=Helvetica;" value="Alice (non-bare)" vertex="1">
<mxGeometry height="20" width="150" x="40" y="35" as="geometry" />
</mxCell>
<mxCell id="box-alice-wt" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#2563EB;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=1;fontColor=#1E40AF;fontFamily=Helvetica;verticalAlign=middle;align=center;arcSize=10;" value="Working Tree&lt;br&gt;&lt;i style=&quot;font-weight:normal;color:#5F5E5A&quot;&gt;files from commit A&lt;br&gt;+ uncommitted edits&lt;/i&gt;" vertex="1">
<mxGeometry height="80" width="230" x="50" y="65" as="geometry" />
</mxCell>
<mxCell id="box-alice-git" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F1F1;strokeColor=#888888;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=1;fontColor=#2C2C2A;fontFamily=Helvetica;verticalAlign=middle;align=center;arcSize=10;" value=".git/&lt;br&gt;&lt;i style=&quot;font-weight:normal;color:#5F5E5A&quot;&gt;main → commit B&lt;br&gt;(moved by push)&lt;/i&gt;" vertex="1">
<mxGeometry height="80" width="230" x="50" y="165" as="geometry" />
</mxCell>

<!-- Out of sync label -->
<mxCell id="label-desync" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=12;fontStyle=1;fontColor=#A32D2D;fontFamily=Helvetica;" value="⚠ OUT OF SYNC" vertex="1">
<mxGeometry height="20" width="140" x="95" y="152" as="geometry" />
</mxCell>

<!-- Bob zone -->
<mxCell id="zone-bob" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FAF4E8;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;arcSize=5;" value="" vertex="1">
<mxGeometry height="280" width="270" x="390" y="30" as="geometry" />
</mxCell>
<mxCell id="label-bob" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=12;fontStyle=1;fontColor=#2C2C2A;fontFamily=Helvetica;" value="Bob (non-bare)" vertex="1">
<mxGeometry height="20" width="150" x="400" y="35" as="geometry" />
</mxCell>
<mxCell id="box-bob-wt" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#2563EB;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=1;fontColor=#1E40AF;fontFamily=Helvetica;verticalAlign=middle;align=center;arcSize=10;" value="Working Tree" vertex="1">
<mxGeometry height="80" width="230" x="410" y="65" as="geometry" />
</mxCell>
<mxCell id="box-bob-git" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F1F1;strokeColor=#888888;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=1;fontColor=#2C2C2A;fontFamily=Helvetica;verticalAlign=middle;align=center;arcSize=10;" value=".git/&lt;br&gt;&lt;i style=&quot;font-weight:normal;color:#5F5E5A&quot;&gt;main → commit B&lt;/i&gt;" vertex="1">
<mxGeometry height="80" width="230" x="410" y="165" as="geometry" />
</mxCell>

<!-- Push arrow (red, from Bob's .git to Alice's .git) -->
<mxCell id="arr-push" edge="1" parent="1" source="box-bob-git" style="endArrow=classic;html=1;strokeColor=#A32D2D;strokeWidth=1.5;endFill=1;endSize=6;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="box-alice-git" vertex="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="label-push" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=bottom;fontSize=11;fontStyle=0;fontColor=#A32D2D;fontFamily=Courier New;" value="git push" vertex="1">
<mxGeometry height="18" width="70" x="315" y="190" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
79 changes: 79 additions & 0 deletions assets/drawio/git-bare-overwrite.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<mxfile host="Electron">
<diagram id="bare-overwrite" name="Silent overwrite of commit B">
<mxGraphModel dx="1094" dy="700" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="760" pageHeight="380" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="bg-card" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;arcSize=5;" value="" vertex="1">
<mxGeometry height="360" width="740" x="10" y="10" as="geometry" />
</mxCell>

<!-- Commit A -->
<mxCell id="card-a" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F1F1;strokeColor=#888888;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=0;fontColor=#2C2C2A;fontFamily=Helvetica;verticalAlign=top;align=center;arcSize=8;" value="&lt;b&gt;Commit A&lt;/b&gt;&lt;br&gt;&lt;i style=&quot;color:#5F5E5A&quot;&gt;original&lt;/i&gt;" vertex="1">
<mxGeometry height="200" width="180" x="40" y="40" as="geometry" />
</mxCell>
<mxCell id="file-a-readme" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=0;fontColor=#2C2C2A;fontFamily=Courier New;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="readme.md" vertex="1">
<mxGeometry height="30" width="140" x="60" y="100" as="geometry" />
</mxCell>
<mxCell id="file-a-config" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=0;fontColor=#2C2C2A;fontFamily=Courier New;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="config.txt" vertex="1">
<mxGeometry height="30" width="140" x="60" y="140" as="geometry" />
</mxCell>
<mxCell id="file-a-report" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=0;fontColor=#2C2C2A;fontFamily=Courier New;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="report.txt" vertex="1">
<mxGeometry height="30" width="140" x="60" y="180" as="geometry" />
</mxCell>

<!-- Commit B -->
<mxCell id="card-b" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F1F1;strokeColor=#888888;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=0;fontColor=#2C2C2A;fontFamily=Helvetica;verticalAlign=top;align=center;arcSize=8;" value="&lt;b&gt;Commit B&lt;/b&gt;&lt;br&gt;&lt;i style=&quot;color:#5F5E5A&quot;&gt;Bob&lt;/i&gt;" vertex="1">
<mxGeometry height="200" width="180" x="280" y="40" as="geometry" />
</mxCell>
<mxCell id="file-b-readme" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=0;fontColor=#2C2C2A;fontFamily=Courier New;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="readme.md" vertex="1">
<mxGeometry height="30" width="140" x="300" y="100" as="geometry" />
</mxCell>
<mxCell id="file-b-config" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DCFCE7;strokeColor=#16A34A;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=1;fontColor=#15803D;fontFamily=Courier New;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="config.txt ✎" vertex="1">
<mxGeometry height="30" width="140" x="300" y="140" as="geometry" />
</mxCell>
<mxCell id="file-b-report" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=0;fontColor=#2C2C2A;fontFamily=Courier New;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="report.txt" vertex="1">
<mxGeometry height="30" width="140" x="300" y="180" as="geometry" />
</mxCell>

<!-- Commit C -->
<mxCell id="card-c" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F1F1;strokeColor=#888888;strokeWidth=0.5;shadow=0;fontSize=12;fontStyle=0;fontColor=#2C2C2A;fontFamily=Helvetica;verticalAlign=top;align=center;arcSize=8;" value="&lt;b&gt;Commit C&lt;/b&gt;&lt;br&gt;&lt;i style=&quot;color:#5F5E5A&quot;&gt;Alice&lt;/i&gt;" vertex="1">
<mxGeometry height="200" width="180" x="520" y="40" as="geometry" />
</mxCell>
<mxCell id="file-c-readme" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D1C7;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=0;fontColor=#2C2C2A;fontFamily=Courier New;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="readme.md" vertex="1">
<mxGeometry height="30" width="140" x="540" y="100" as="geometry" />
</mxCell>
<mxCell id="file-c-config" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCEBEB;strokeColor=#A32D2D;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=1;fontColor=#791F1F;fontFamily=Courier New;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="config.txt ⚠" vertex="1">
<mxGeometry height="30" width="140" x="540" y="140" as="geometry" />
</mxCell>
<mxCell id="file-c-report" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DCFCE7;strokeColor=#16A34A;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=1;fontColor=#15803D;fontFamily=Courier New;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="report.txt ✎" vertex="1">
<mxGeometry height="30" width="140" x="540" y="180" as="geometry" />
</mxCell>

<!-- Parent arrows (child → parent) -->
<mxCell id="arr-b-a" edge="1" parent="1" source="card-b" style="endArrow=classic;html=1;strokeColor=#444441;strokeWidth=1;endFill=1;endSize=6;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="card-a" vertex="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="arr-c-b" edge="1" parent="1" source="card-c" style="endArrow=classic;html=1;strokeColor=#444441;strokeWidth=1;endFill=1;endSize=6;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="card-b" vertex="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>

<!-- Main pill pointing to C -->
<mxCell id="pill-main" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#2563EB;strokeWidth=0.5;arcSize=20;shadow=0;fontSize=12;fontStyle=1;fontColor=#1E40AF;fontFamily=Helvetica;verticalAlign=middle;align=center;" value="main" vertex="1">
<mxGeometry height="28" width="60" x="580" y="252" as="geometry" />
</mxCell>
<mxCell id="arr-main-c" edge="1" parent="1" source="pill-main" style="endArrow=classic;html=1;strokeColor=#444441;strokeWidth=1;endFill=1;endSize=6;dashed=1;dashPattern=4 3;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="card-c" vertex="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>

<!-- Legend -->
<mxCell id="legend-changed" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DCFCE7;strokeColor=#16A34A;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=0;fontColor=#15803D;fontFamily=Helvetica;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="✎ changed in this commit" vertex="1">
<mxGeometry height="26" width="190" x="40" y="290" as="geometry" />
</mxCell>
<mxCell id="legend-reverted" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCEBEB;strokeColor=#A32D2D;strokeWidth=0.5;shadow=0;fontSize=11;fontStyle=0;fontColor=#791F1F;fontFamily=Helvetica;verticalAlign=middle;align=left;arcSize=5;spacingLeft=8;" value="⚠ Bob's change silently reverted" vertex="1">
<mxGeometry height="26" width="230" x="250" y="290" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file added assets/images/git-bare-after.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/git-bare-before.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/git-bare-overwrite.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading