From 21afea5276fe197bde4e7aa4189019523a4dfba9 Mon Sep 17 00:00:00 2001 From: Martin Vuk Date: Thu, 11 Dec 2025 11:53:16 +0100 Subject: [PATCH] Refine the diagram --- git-figure.pdf | Bin 44099 -> 43961 bytes git-figure.svg | 1224 ++++++++++++++++++++++++------------------------ git-figure.typ | 66 +-- 3 files changed, 650 insertions(+), 640 deletions(-) diff --git a/git-figure.pdf b/git-figure.pdf index 9b6dd7a5d19c0d06a8cd95d7c0c3d85b8fc4bca2..e670ba5ec03f1d84102e50c453957e1250e4e49f 100644 GIT binary patch delta 21272 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 delta 21349 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 R4K*AJK|`o{dF3?}{ts%xl4bw^ diff --git a/git-figure.svg b/git-figure.svg index 9f6d59b..a1f7f76 100644 --- a/git-figure.svg +++ b/git-figure.svg @@ -5,81 +5,84 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -89,10 +92,6 @@ - - - - @@ -102,13 +101,13 @@ - - - - + + + + - + @@ -118,10 +117,6 @@ - - - - @@ -131,13 +126,13 @@ - - - - + + + + - + @@ -147,10 +142,6 @@ - - - - @@ -160,13 +151,13 @@ - - - - + + + + - + @@ -176,10 +167,6 @@ - - - - @@ -189,13 +176,13 @@ - - - - + + + + - + @@ -215,16 +202,16 @@ - - - - - - - + + + + + + + - + @@ -242,11 +229,11 @@ - - + + - + @@ -271,11 +258,11 @@ - - + + - + @@ -293,11 +280,11 @@ - - + + - + @@ -315,11 +302,11 @@ - - + + - + @@ -337,11 +324,11 @@ - - + + - + @@ -386,11 +373,11 @@ - - + + - + @@ -408,11 +395,11 @@ - - + + - + @@ -430,11 +417,11 @@ - - + + - + @@ -452,11 +439,11 @@ - - + + - + @@ -474,11 +461,11 @@ - - + + - + @@ -496,11 +483,11 @@ - - + + - + @@ -518,11 +505,11 @@ - - + + - + @@ -540,11 +527,11 @@ - - + + - + @@ -560,11 +547,11 @@ - - + + - + @@ -581,11 +568,32 @@ - - + + - + + + + + + + + + + + + + + + + + + + + + + @@ -602,11 +610,11 @@ - - + + - + @@ -623,10 +631,10 @@ - + - + @@ -646,124 +654,122 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -771,11 +777,11 @@ - - + + - + @@ -820,7 +826,7 @@ - + @@ -831,11 +837,12 @@ - - - - - + + + + + + @@ -843,11 +850,11 @@ - - + + - + @@ -890,15 +897,15 @@ - - + + - + - + @@ -911,61 +918,61 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + @@ -973,11 +980,11 @@ - - + + - + @@ -989,45 +996,49 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -1080,12 +1091,12 @@ - - - - - - + + + + + + @@ -1095,16 +1106,14 @@ - - - - - - - - - - + + + + + + + + @@ -1126,15 +1135,12 @@ - - - - - - - - - + + + + + + @@ -1146,14 +1152,14 @@ - + - + - + @@ -1184,7 +1190,7 @@ - + @@ -1204,11 +1210,11 @@ - - + + - + @@ -1221,18 +1227,12 @@ - - - - - - - - - - - - + + + + + + @@ -1240,33 +1240,34 @@ - - + + - + - - + + - - - + + + - - - - - - - - - - + + + + + + + + + + + @@ -1274,11 +1275,11 @@ - - + + - + @@ -1302,11 +1303,11 @@ - - + + - + @@ -1330,11 +1331,11 @@ - - + + - + @@ -1347,18 +1348,12 @@ - - - - - - - - - - - - + + + + + + @@ -1366,11 +1361,11 @@ - - + + - + @@ -1383,15 +1378,11 @@ - - - - - - - - - + + + + + @@ -1399,11 +1390,11 @@ - - + + - + @@ -1416,20 +1407,9 @@ - - - - - - - - - - - - - - + + + @@ -1437,13 +1417,13 @@ - - - - + + + + - + @@ -1456,8 +1436,6 @@ - - @@ -1482,15 +1460,6 @@ - - - - - - - - - @@ -1629,8 +1598,8 @@ - - + + @@ -1638,6 +1607,9 @@ + + + @@ -1668,89 +1640,119 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1806,11 +1808,14 @@ - - + + - - + + + + + @@ -1824,9 +1829,6 @@ - - - @@ -1836,6 +1838,9 @@ + + + @@ -1851,33 +1856,39 @@ + + + - - + + + + + - - + + - - + + - - - - - + + + + + @@ -1902,27 +1913,24 @@ - - - - - - - - - - - + + + + + + + + @@ -1935,8 +1943,8 @@ - - + + diff --git a/git-figure.typ b/git-figure.typ index 0083433..6994865 100644 --- a/git-figure.typ +++ b/git-figure.typ @@ -14,7 +14,7 @@ #let commit-object(coord, hash, name, ..args) = node( coord, align(left, [#text(size: 8pt, gray.darken(50%), raw(hash))\ #name]), corner-radius: 7pt, fill: commit-color.lighten(50%), stroke: none, ..args) -#let tree-object(coord, hash, ..args) = commit-object(coord, hash, [tree], +#let tree-object(coord, hash, content, ..args) = commit-object(coord, hash, content, width: 2cm, fill: blue.lighten(50%), ..args) #let file-object(coord, hash, name, ..args) = commit-object(coord, hash, name, width: 2cm, fill: gray.lighten(50%), ..args) @@ -91,47 +91,49 @@ commit-node((rel: (0, -1), to: ), E2h, name: ) commit-node((rel: (0, -1), to: ), E3h, fill: none, stroke: thindashed, name: ) // branches - node((rel: (-1, 0), to: ), [main], shape: hexagon, stroke: branch-color, name:
) + node((rel: (-1, 0), to: ), [main], shape: chevron, stroke: branch-color, name:
) edge(
, , "->", stroke: thin) - node((rel: (-2, 0), to: ), [hotfix], shape: hexagon, stroke: branch-color, name: ) + node((rel: (-2, 0), to: ), [hotfix], shape: chevron, stroke: branch-color, name: ) edge(, , "->", stroke: thin) // tags - node((rel: (-1, 0), to: ), [v-1.0], shape: chevron, stroke: tag-color, name: ) - edge(, , "->", stroke: thin) - node((rel: (-1, 0), to: ), [v-1.1], shape: chevron, stroke: tag-color, name: ) - edge(, , "->", stroke: thin) + node((rel: (-1, 0), to: ), [v-2.0], shape: chevron, stroke: tag-color, name: ) + edge(, , "->", stroke: thin) + node((rel: (-1, 0), to: ), [v-1.0], shape: chevron, stroke: tag-color, name: ) + edge(, , "->", stroke: thin) + node((rel: (0.5, 0), to: ), [v-1.1], shape:chevron.with(dir: left), stroke: tag-color, name: ) + edge(, , "->", stroke: thin) // enclose the tree node((rel: (0, -1), to: ), [*Version history*\ - #align(left, text(size: 8pt)[ + #align(left, text(size: 10pt)[ _Directed Acyclic Graph (DAG)_ describes version history. - Commits are nodes in DAG, while an edge connect a commit with its parent. + Commits are nodes in DAG. Commits are connected with their parents. ])], stroke:none, width: 5cm, name: ) node(snap: false, enclose: (, , ), stroke: thindashed, width: 3cm, fill: gray.lighten(70%)) // branch cloud - node((rel: (-0.5, -1), to: ), [#text(branch-color.darken(20%), smallcaps[*Branches*])\ references that move along when commiting canges], + node((rel: (-0.5, -1), to: ), [#text(branch-color.darken(20%), smallcaps[*Branches*])\ references that move along when commiting changes], stroke: thin, corner-radius: 10pt, inset: 5pt, width: 4cm, name: ) edge(, , corner: left, stroke: thindotted) edge(,
, corner: left, stroke: thindotted) // tag cloud - node((rel: (-0.5, 1.5), to: ), [#text(tag-color, smallcaps[*Tags*])\ references that don't move], + node((rel: (-0.5, 1.5), to: ), [#text(tag-color, smallcaps[*Tags*])\ references that don't move], stroke: thin, corner-radius: 10pt, inset: 5pt, width: 4cm, name: ) - edge(, , corner: right, stroke: thindotted) - edge(, , corner: left, stroke: thindotted) + edge(, , corner: right, stroke: thindotted) + edge(, , corner: left, stroke: thindotted) // staging area - node((rel: (1, 0), to: ), [#smallcaps[*Staging area*]\ #text(size: 8pt)[filesystem snapshot that will be commited in - the next commit]], stroke: thindashed, corner-radius: 10pt, width: 3cm, name: ) + node((rel: (1, 0), to: ), [#smallcaps[*Staging area*]\ #text(size: 10pt)[filesystem snapshot that will be commited in + the next commit]], stroke: thindashed, corner-radius: 10pt, width: 4.5cm, name: ) edge(, , stroke: thindotted) // commit node((rel: (1, 0.5), to: ), [ - #text(commit-color, smallcaps[*Commit*])\ snapshot of filesystem tree in object store\ + #text(commit-color, smallcaps[*Commit*])\ file tree snapshot with metadata in object store\ #table(columns: 1, fill: commit-color.lighten(50%), align: left, [commit hash: #raw(E1h)], raw(block: true, " tree 65c47fee parent 16f299 -author MV ) @@ -161,7 +163,7 @@ Change foo".replace("16f299", E2h).replace("65c47fee", tree1h) edge(, , "->") edge(, , "->") // merged branch - edge(, , "->", layer: 1, label: [parent of], label-angle: auto) + edge(, , "->", layer: 1, label: [parent], label-angle: auto) edge(, , "->") edge(, , "->") // unmerged branch @@ -169,21 +171,21 @@ Change foo".replace("16f299", E2h).replace("65c47fee", tree1h) edge(, , "->") edge(, , "->", stroke: (dash: "dashed")) // object store - let obj_store = (rel: (-0.5, 1), to: ) - node((rel: (4cm, -2.2cm), to: ), align(left)[Content addressable object store \ #raw(".git/objects")], stroke: none, snap: false ) - commit-object((rel: (1.5, 2), to: ), E1h, [second commit], name: ) - commit-object((rel: (1.5, 3), to: ), "16f29a", [first commit], width: 2.8cm, name: ) - tree-object((rel:(-1, 0), to: ), tree1h, name:) + let bla_h = "d1bc32" + node((rel: (4cm, -2.5cm), to: ), align(center)[Content addressable object store \ #raw(".git/objects")], stroke: none, snap: false ) + commit-object((rel: (1.5, 2), to: ), E1h, [Add bla], name: ) + commit-object((rel: (1.5, 3), to: ), Eh, [Merge commit], name: ) + tree-object((rel:(-1, 0), to: ), tree1h, [tree], name:) edge(, , stroke: thin, "->") - tree-object((rel:(-1, 0), to: ), "e05dcd", name: ) + tree-object((rel:(-1, 0), to: ), "e05dcd",[tree], name: ) edge(, , stroke: thin, "->") - file-object((rel:(-1, -1), to: ), "cb48cd", [`new content`], name: ) - file-object((rel:(-1, 0), to: ), "077231", [`unchanged`], name: ) - file-object((rel:(-1, 1), to: ), "d1bc32", [`first content`], name: ) - edge(, , [`bar.txt`], "->", label-angle: auto, stroke: thin) - edge(, , [`foo.txt`], "->", label-angle: auto, stroke: thin) - edge(, , [`bar.txt`], "->", label-angle: auto, stroke: thin) - edge(, , [`foo.txt`], "->", label-angle: auto, stroke: thin) + file-object((rel:(-1, -0.5), to: ), "cb48cd", [`bla bla`], name: ) + file-object((rel:(-1, 0.5), to: ), "077231", [`lorem`], name: ) + file-object((rel:(-1, 1.5), to: ), bla_h, [`bla`], name: ) + edge(, , [`bar`], "->", label-angle: auto, stroke: thin) + edge(, , [`foo`], "->", label-angle: auto, stroke: thin) + edge(, , [`bar`], "->", label-angle: auto, stroke: thin) + edge(, , [`foo`], "->", label-angle: auto, stroke: thin) node((rel: (0, 0.5), to:), enclose: (, , ), stroke: thindashed, corner-radius: 5pt, fill: gray.lighten(70%), snap: false, layer: -2) // time direction