sirena 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/build_deploy.yml +59 -0
- data/.github/workflows/links.yml +85 -0
- data/.github/workflows/rake.yml +15 -0
- data/.github/workflows/release.yml +27 -0
- data/.gitignore +68 -0
- data/.rspec +3 -0
- data/.rubocop.yml +14 -0
- data/.rubocop_todo.yml +70 -0
- data/ARCHITECTURE.md +744 -0
- data/Gemfile +12 -0
- data/LICENSE +25 -0
- data/README.adoc +357 -0
- data/Rakefile +11 -0
- data/docs/.gitignore +1 -0
- data/docs/Gemfile +13 -0
- data/docs/_config.yml +182 -0
- data/docs/_diagram_types/architecture-diagram.adoc +314 -0
- data/docs/_diagram_types/block-diagram.adoc +345 -0
- data/docs/_diagram_types/c4-diagram.adoc +559 -0
- data/docs/_diagram_types/class-diagram.adoc +816 -0
- data/docs/_diagram_types/er-diagram.adoc +719 -0
- data/docs/_diagram_types/error-diagram.adoc +114 -0
- data/docs/_diagram_types/examples/flowchart-examples.adoc +29 -0
- data/docs/_diagram_types/flowchart.adoc +488 -0
- data/docs/_diagram_types/gantt-chart.adoc +502 -0
- data/docs/_diagram_types/git-graph.adoc +600 -0
- data/docs/_diagram_types/index.adoc +192 -0
- data/docs/_diagram_types/info-diagram.adoc +103 -0
- data/docs/_diagram_types/kanban-diagram.adoc +262 -0
- data/docs/_diagram_types/mindmap.adoc +603 -0
- data/docs/_diagram_types/packet-diagram.adoc +378 -0
- data/docs/_diagram_types/pie-chart.adoc +335 -0
- data/docs/_diagram_types/quadrant-chart.adoc +406 -0
- data/docs/_diagram_types/radar-chart.adoc +528 -0
- data/docs/_diagram_types/requirement-diagram.adoc +416 -0
- data/docs/_diagram_types/sankey-diagram.adoc +357 -0
- data/docs/_diagram_types/sequence-diagram.adoc +664 -0
- data/docs/_diagram_types/state-diagram.adoc +658 -0
- data/docs/_diagram_types/timeline.adoc +352 -0
- data/docs/_diagram_types/treemap-diagram.adoc +462 -0
- data/docs/_diagram_types/user-journey.adoc +602 -0
- data/docs/_features/index.adoc +129 -0
- data/docs/_guides/cli-reference.adoc +203 -0
- data/docs/_guides/index.adoc +56 -0
- data/docs/_guides/installation.adoc +100 -0
- data/docs/_guides/quick-start.adoc +132 -0
- data/docs/_pages/comparison.adoc +441 -0
- data/docs/_pages/compatibility.adoc +300 -0
- data/docs/_pages/index.adoc +39 -0
- data/docs/_references/index.adoc +103 -0
- data/docs/_tutorials/index.adoc +57 -0
- data/docs/index.adoc +166 -0
- data/docs/lychee.toml +54 -0
- data/examples/.gitignore +10 -0
- data/examples/README.adoc +196 -0
- data/examples/README.md +64 -0
- data/examples/architecture/01-basic-services.mmd +9 -0
- data/examples/architecture/01-basic-services.svg +37 -0
- data/examples/architecture/02-service-groups.mmd +16 -0
- data/examples/architecture/02-service-groups.svg +55 -0
- data/examples/architecture/README.adoc +79 -0
- data/examples/block/01-basic-blocks.mmd +13 -0
- data/examples/block/01-basic-blocks.svg +44 -0
- data/examples/block/02-block-shapes.mmd +13 -0
- data/examples/block/02-block-shapes.svg +47 -0
- data/examples/block/README.adoc +85 -0
- data/examples/c4/01-context-diagram.mmd +10 -0
- data/examples/c4/01-context-diagram.svg +45 -0
- data/examples/c4/02-container-diagram.mmd +24 -0
- data/examples/c4/02-container-diagram.svg +105 -0
- data/examples/c4/README.adoc +92 -0
- data/examples/class_diagram/01-basic-classes.mmd +61 -0
- data/examples/class_diagram/01-basic-classes.svg +117 -0
- data/examples/class_diagram/02-relationships.mmd +61 -0
- data/examples/class_diagram/02-relationships.svg +129 -0
- data/examples/class_diagram/README.adoc +93 -0
- data/examples/er_diagram/01-basic-entities.mmd +64 -0
- data/examples/er_diagram/01-basic-entities.svg +5 -0
- data/examples/er_diagram/02-cardinality.mmd +57 -0
- data/examples/er_diagram/02-cardinality.svg +125 -0
- data/examples/er_diagram/README.adoc +88 -0
- data/examples/error/01-basic-error.mmd +1 -0
- data/examples/error/01-basic-error.svg +13 -0
- data/examples/error/02-error-display.mmd +1 -0
- data/examples/error/02-error-display.svg +13 -0
- data/examples/error/README.adoc +71 -0
- data/examples/error_message_example.svg +13 -0
- data/examples/flowchart/00-original.mmd +13 -0
- data/examples/flowchart/00-original.svg +5 -0
- data/examples/flowchart/01-basic-flow.mmd +7 -0
- data/examples/flowchart/01-basic-flow.svg +52 -0
- data/examples/flowchart/01-basic-flow.yml +13 -0
- data/examples/flowchart/02*.svg +87 -0
- data/examples/flowchart/02-node-shapes.mmd +9 -0
- data/examples/flowchart/02-node-shapes.svg +33 -0
- data/examples/flowchart/03-edge-types.mmd +7 -0
- data/examples/flowchart/03-edge-types.svg +53 -0
- data/examples/flowchart/04-subgraphs.mmd +9 -0
- data/examples/flowchart/04-subgraphs.svg +33 -0
- data/examples/flowchart/05-styling.mmd +9 -0
- data/examples/flowchart/05-styling.svg +33 -0
- data/examples/flowchart/06-complex-flow.mmd +8 -0
- data/examples/flowchart/06-complex-flow.svg +59 -0
- data/examples/flowchart/README.adoc +167 -0
- data/examples/gantt/01-simple-timeline.* +14 -0
- data/examples/gantt/01-simple-timeline.mmd +6 -0
- data/examples/gantt/01-simple-timeline.svg +26 -0
- data/examples/gantt/02-task-dependencies.mmd +6 -0
- data/examples/gantt/02-task-dependencies.svg +26 -0
- data/examples/gantt/README.adoc +86 -0
- data/examples/git_graph/01-linear-history.mmd +12 -0
- data/examples/git_graph/01-linear-history.svg +26 -0
- data/examples/git_graph/02-branching.mmd +12 -0
- data/examples/git_graph/02-branching.svg +26 -0
- data/examples/git_graph/README.adoc +73 -0
- data/examples/info/02-showinfo.mmd +1 -0
- data/examples/info/02-showinfo.svg +10 -0
- data/examples/info/README.adoc +58 -0
- data/examples/info_showinfo_example.svg +10 -0
- data/examples/kanban/01-simple-board.mmd +8 -0
- data/examples/kanban/01-simple-board.svg +43 -0
- data/examples/kanban/02-workflow.mmd +8 -0
- data/examples/kanban/02-workflow.svg +43 -0
- data/examples/kanban/README.adoc +79 -0
- data/examples/mindmap/01-simple-tree.mmd +19 -0
- data/examples/mindmap/01-simple-tree.svg +61 -0
- data/examples/mindmap/02-knowledge-map.mmd +19 -0
- data/examples/mindmap/02-knowledge-map.svg +61 -0
- data/examples/mindmap/README.adoc +77 -0
- data/examples/packet/01-basic-packet.* +17 -0
- data/examples/packet/01-basic-packet.mmd +4 -0
- data/examples/packet/01-basic-packet.svg +82 -0
- data/examples/packet/README.adoc +58 -0
- data/examples/pie/01-simple-chart.mmd +5 -0
- data/examples/pie/01-simple-chart.svg +17 -0
- data/examples/pie/02-labeled-slices.mmd +6 -0
- data/examples/pie/02-labeled-slices.svg +19 -0
- data/examples/pie/README.adoc +75 -0
- data/examples/quadrant/01-basic-quadrant.mmd +13 -0
- data/examples/quadrant/01-basic-quadrant.svg +33 -0
- data/examples/quadrant/02-positioned-items.mmd +14 -0
- data/examples/quadrant/02-positioned-items.svg +35 -0
- data/examples/quadrant/README.adoc +84 -0
- data/examples/radar/01-simple-radar.* +5 -0
- data/examples/radar/01-simple-radar.mmd +3 -0
- data/examples/radar/01-simple-radar.svg +25 -0
- data/examples/radar/02-multiple-curves.mmd +4 -0
- data/examples/radar/02-multiple-curves.svg +43 -0
- data/examples/radar/README.adoc +75 -0
- data/examples/requirement/01-basic-requirements.mmd +23 -0
- data/examples/requirement/01-basic-requirements.svg +49 -0
- data/examples/requirement/02-risk-levels.mmd +23 -0
- data/examples/requirement/02-risk-levels.svg +49 -0
- data/examples/requirement/README.adoc +85 -0
- data/examples/sankey/01-simple-flow.mmd +7 -0
- data/examples/sankey/01-simple-flow.svg +34 -0
- data/examples/sankey/02-multi-stage.mmd +11 -0
- data/examples/sankey/02-multi-stage.svg +44 -0
- data/examples/sankey/README.adoc +74 -0
- data/examples/sequence/01-basic-sequence.mmd +27 -0
- data/examples/sequence/01-basic-sequence.svg +5 -0
- data/examples/sequence/02-activations.mmd +17 -0
- data/examples/sequence/02-activations.svg +78 -0
- data/examples/sequence/README.adoc +86 -0
- data/examples/state_diagram/01-simple-states.mmd +29 -0
- data/examples/state_diagram/01-simple-states.svg +5 -0
- data/examples/state_diagram/02-composite.mmd +19 -0
- data/examples/state_diagram/02-composite.svg +81 -0
- data/examples/state_diagram/README.adoc +90 -0
- data/examples/timeline/01-simple-timeline.mmd +11 -0
- data/examples/timeline/01-simple-timeline.svg +36 -0
- data/examples/timeline/02-periods.mmd +15 -0
- data/examples/timeline/02-periods.svg +47 -0
- data/examples/timeline/README.adoc +78 -0
- data/examples/treemap/01-basic-treemap.mmd +12 -0
- data/examples/treemap/01-basic-treemap.svg +59 -0
- data/examples/treemap/README.adoc +59 -0
- data/examples/user_journey/01-simple-journey.mmd +23 -0
- data/examples/user_journey/01-simple-journey.svg +5 -0
- data/examples/user_journey/02-multi-actor.mmd +18 -0
- data/examples/user_journey/02-multi-actor.svg +129 -0
- data/examples/user_journey/README.adoc +81 -0
- data/examples/xychart/01-line-chart.mmd +5 -0
- data/examples/xychart/01-line-chart.svg +43 -0
- data/examples/xychart/02-bar-chart.mmd +7 -0
- data/examples/xychart/02-bar-chart.svg +48 -0
- data/examples/xychart/README.adoc +80 -0
- data/exe/sirena +7 -0
- data/lib/sirena/cli.rb +138 -0
- data/lib/sirena/commands/batch.rb +117 -0
- data/lib/sirena/commands/render.rb +80 -0
- data/lib/sirena/commands/types.rb +29 -0
- data/lib/sirena/commands/version.rb +24 -0
- data/lib/sirena/diagram/architecture.rb +46 -0
- data/lib/sirena/diagram/base.rb +61 -0
- data/lib/sirena/diagram/block.rb +81 -0
- data/lib/sirena/diagram/c4.rb +328 -0
- data/lib/sirena/diagram/class_diagram.rb +385 -0
- data/lib/sirena/diagram/er_diagram.rb +238 -0
- data/lib/sirena/diagram/error.rb +38 -0
- data/lib/sirena/diagram/flowchart.rb +160 -0
- data/lib/sirena/diagram/gantt.rb +71 -0
- data/lib/sirena/diagram/git_graph.rb +36 -0
- data/lib/sirena/diagram/info.rb +38 -0
- data/lib/sirena/diagram/kanban.rb +178 -0
- data/lib/sirena/diagram/mindmap.rb +54 -0
- data/lib/sirena/diagram/packet.rb +79 -0
- data/lib/sirena/diagram/pie.rb +115 -0
- data/lib/sirena/diagram/quadrant.rb +138 -0
- data/lib/sirena/diagram/radar.rb +52 -0
- data/lib/sirena/diagram/requirement.rb +133 -0
- data/lib/sirena/diagram/sankey.rb +217 -0
- data/lib/sirena/diagram/sequence.rb +242 -0
- data/lib/sirena/diagram/state_diagram.rb +237 -0
- data/lib/sirena/diagram/timeline.rb +171 -0
- data/lib/sirena/diagram/treemap.rb +84 -0
- data/lib/sirena/diagram/user_journey.rb +149 -0
- data/lib/sirena/diagram/xy_chart.rb +76 -0
- data/lib/sirena/diagram.rb +8 -0
- data/lib/sirena/diagram_registry.rb +101 -0
- data/lib/sirena/engine.rb +292 -0
- data/lib/sirena/parser/architecture.rb +41 -0
- data/lib/sirena/parser/base.rb +41 -0
- data/lib/sirena/parser/block.rb +72 -0
- data/lib/sirena/parser/c4.rb +53 -0
- data/lib/sirena/parser/class_diagram.rb +63 -0
- data/lib/sirena/parser/er_diagram.rb +40 -0
- data/lib/sirena/parser/error.rb +49 -0
- data/lib/sirena/parser/flowchart.rb +71 -0
- data/lib/sirena/parser/gantt.rb +60 -0
- data/lib/sirena/parser/git_graph.rb +95 -0
- data/lib/sirena/parser/grammars/architecture.rb +145 -0
- data/lib/sirena/parser/grammars/block.rb +190 -0
- data/lib/sirena/parser/grammars/c4.rb +226 -0
- data/lib/sirena/parser/grammars/class_diagram.rb +284 -0
- data/lib/sirena/parser/grammars/common.rb +84 -0
- data/lib/sirena/parser/grammars/er_diagram.rb +114 -0
- data/lib/sirena/parser/grammars/error.rb +40 -0
- data/lib/sirena/parser/grammars/flowchart.rb +298 -0
- data/lib/sirena/parser/grammars/gantt.rb +252 -0
- data/lib/sirena/parser/grammars/git_graph.rb +167 -0
- data/lib/sirena/parser/grammars/info.rb +58 -0
- data/lib/sirena/parser/grammars/kanban.rb +83 -0
- data/lib/sirena/parser/grammars/mindmap.rb +115 -0
- data/lib/sirena/parser/grammars/packet.rb +73 -0
- data/lib/sirena/parser/grammars/pie.rb +128 -0
- data/lib/sirena/parser/grammars/quadrant.rb +199 -0
- data/lib/sirena/parser/grammars/radar.rb +150 -0
- data/lib/sirena/parser/grammars/requirement.rb +188 -0
- data/lib/sirena/parser/grammars/sankey.rb +104 -0
- data/lib/sirena/parser/grammars/sequence.rb +247 -0
- data/lib/sirena/parser/grammars/state_diagram.rb +172 -0
- data/lib/sirena/parser/grammars/timeline.rb +142 -0
- data/lib/sirena/parser/grammars/treemap.rb +120 -0
- data/lib/sirena/parser/grammars/xy_chart.rb +120 -0
- data/lib/sirena/parser/info.rb +49 -0
- data/lib/sirena/parser/kanban.rb +97 -0
- data/lib/sirena/parser/mindmap.rb +106 -0
- data/lib/sirena/parser/packet.rb +76 -0
- data/lib/sirena/parser/pie.rb +49 -0
- data/lib/sirena/parser/quadrant.rb +57 -0
- data/lib/sirena/parser/radar.rb +104 -0
- data/lib/sirena/parser/requirement.rb +70 -0
- data/lib/sirena/parser/sankey.rb +64 -0
- data/lib/sirena/parser/sequence.rb +51 -0
- data/lib/sirena/parser/state_diagram.rb +69 -0
- data/lib/sirena/parser/timeline.rb +57 -0
- data/lib/sirena/parser/transforms/architecture.rb +97 -0
- data/lib/sirena/parser/transforms/block.rb +254 -0
- data/lib/sirena/parser/transforms/c4.rb +347 -0
- data/lib/sirena/parser/transforms/class_diagram.rb +352 -0
- data/lib/sirena/parser/transforms/er_diagram.rb +169 -0
- data/lib/sirena/parser/transforms/error.rb +58 -0
- data/lib/sirena/parser/transforms/flowchart.rb +293 -0
- data/lib/sirena/parser/transforms/gantt.rb +215 -0
- data/lib/sirena/parser/transforms/git_graph.rb +160 -0
- data/lib/sirena/parser/transforms/info.rb +58 -0
- data/lib/sirena/parser/transforms/kanban.rb +176 -0
- data/lib/sirena/parser/transforms/mindmap.rb +227 -0
- data/lib/sirena/parser/transforms/packet.rb +63 -0
- data/lib/sirena/parser/transforms/pie.rb +143 -0
- data/lib/sirena/parser/transforms/quadrant.rb +177 -0
- data/lib/sirena/parser/transforms/radar.rb +126 -0
- data/lib/sirena/parser/transforms/requirement.rb +272 -0
- data/lib/sirena/parser/transforms/sankey.rb +122 -0
- data/lib/sirena/parser/transforms/sequence.rb +342 -0
- data/lib/sirena/parser/transforms/state_diagram.rb +292 -0
- data/lib/sirena/parser/transforms/timeline.rb +177 -0
- data/lib/sirena/parser/transforms/treemap.rb +81 -0
- data/lib/sirena/parser/transforms/xy_chart.rb +132 -0
- data/lib/sirena/parser/treemap.rb +98 -0
- data/lib/sirena/parser/user_journey.rb +120 -0
- data/lib/sirena/parser/xy_chart.rb +114 -0
- data/lib/sirena/parser.rb +8 -0
- data/lib/sirena/renderer/architecture.rb +251 -0
- data/lib/sirena/renderer/base.rb +251 -0
- data/lib/sirena/renderer/block.rb +286 -0
- data/lib/sirena/renderer/c4.rb +490 -0
- data/lib/sirena/renderer/class_diagram.rb +499 -0
- data/lib/sirena/renderer/er_diagram.rb +417 -0
- data/lib/sirena/renderer/error.rb +131 -0
- data/lib/sirena/renderer/flowchart.rb +301 -0
- data/lib/sirena/renderer/gantt.rb +331 -0
- data/lib/sirena/renderer/git_graph.rb +368 -0
- data/lib/sirena/renderer/info.rb +93 -0
- data/lib/sirena/renderer/kanban.rb +295 -0
- data/lib/sirena/renderer/mindmap.rb +396 -0
- data/lib/sirena/renderer/packet.rb +239 -0
- data/lib/sirena/renderer/pie.rb +235 -0
- data/lib/sirena/renderer/quadrant.rb +292 -0
- data/lib/sirena/renderer/radar.rb +323 -0
- data/lib/sirena/renderer/requirement.rb +371 -0
- data/lib/sirena/renderer/sankey.rb +255 -0
- data/lib/sirena/renderer/sequence.rb +424 -0
- data/lib/sirena/renderer/state_diagram.rb +328 -0
- data/lib/sirena/renderer/timeline.rb +304 -0
- data/lib/sirena/renderer/treemap.rb +152 -0
- data/lib/sirena/renderer/user_journey.rb +331 -0
- data/lib/sirena/renderer/xy_chart.rb +452 -0
- data/lib/sirena/renderer.rb +8 -0
- data/lib/sirena/svg/circle.rb +41 -0
- data/lib/sirena/svg/document.rb +103 -0
- data/lib/sirena/svg/element.rb +65 -0
- data/lib/sirena/svg/ellipse.rb +33 -0
- data/lib/sirena/svg/group.rb +71 -0
- data/lib/sirena/svg/line.rb +49 -0
- data/lib/sirena/svg/path.rb +76 -0
- data/lib/sirena/svg/polygon.rb +43 -0
- data/lib/sirena/svg/polyline.rb +35 -0
- data/lib/sirena/svg/rect.rb +57 -0
- data/lib/sirena/svg/style.rb +44 -0
- data/lib/sirena/svg/text.rb +72 -0
- data/lib/sirena/svg.rb +19 -0
- data/lib/sirena/text_measurement.rb +71 -0
- data/lib/sirena/theme/builtin/dark.yml +70 -0
- data/lib/sirena/theme/builtin/default.yml +80 -0
- data/lib/sirena/theme/builtin/high_contrast.yml +70 -0
- data/lib/sirena/theme/builtin/light.yml +70 -0
- data/lib/sirena/theme/color_palette.rb +48 -0
- data/lib/sirena/theme/effect_styles.rb +28 -0
- data/lib/sirena/theme/registry.rb +41 -0
- data/lib/sirena/theme/shape_styles.rb +28 -0
- data/lib/sirena/theme/spacing_config.rb +24 -0
- data/lib/sirena/theme/typography.rb +30 -0
- data/lib/sirena/theme.rb +69 -0
- data/lib/sirena/transform/architecture.rb +273 -0
- data/lib/sirena/transform/base.rb +199 -0
- data/lib/sirena/transform/block.rb +215 -0
- data/lib/sirena/transform/c4.rb +288 -0
- data/lib/sirena/transform/class_diagram.rb +296 -0
- data/lib/sirena/transform/er_diagram.rb +204 -0
- data/lib/sirena/transform/error.rb +39 -0
- data/lib/sirena/transform/flowchart.rb +161 -0
- data/lib/sirena/transform/gantt.rb +253 -0
- data/lib/sirena/transform/git_graph.rb +283 -0
- data/lib/sirena/transform/info.rb +39 -0
- data/lib/sirena/transform/kanban.rb +180 -0
- data/lib/sirena/transform/mindmap.rb +251 -0
- data/lib/sirena/transform/packet.rb +185 -0
- data/lib/sirena/transform/pie.rb +62 -0
- data/lib/sirena/transform/quadrant.rb +167 -0
- data/lib/sirena/transform/radar.rb +227 -0
- data/lib/sirena/transform/requirement.rb +233 -0
- data/lib/sirena/transform/sankey.rb +212 -0
- data/lib/sirena/transform/sequence.rb +143 -0
- data/lib/sirena/transform/state_diagram.rb +228 -0
- data/lib/sirena/transform/timeline.rb +139 -0
- data/lib/sirena/transform/treemap.rb +120 -0
- data/lib/sirena/transform/user_journey.rb +207 -0
- data/lib/sirena/transform/xy_chart.rb +273 -0
- data/lib/sirena/transform.rb +8 -0
- data/lib/sirena/version.rb +5 -0
- data/lib/sirena.rb +328 -0
- data/lib/tasks/benchmark.rake +532 -0
- data/lib/tasks/examples.rake +468 -0
- data/lib/tasks/generate_mermaid_fixtures.rake +363 -0
- data/lib/tasks/mermaid_fixtures.rake +46 -0
- data/scripts/extract_mermaid_tests.rb +493 -0
- data/scripts/rename_to_sirena.rb +73 -0
- data/sirena.gemspec +47 -0
- metadata +529 -0
|
@@ -0,0 +1,600 @@
|
|
|
1
|
+
= Git graph diagrams
|
|
2
|
+
:toc:
|
|
3
|
+
:toclevels: 3
|
|
4
|
+
|
|
5
|
+
== Overview
|
|
6
|
+
|
|
7
|
+
Git graph diagrams in Sirena visualize Git repository history, showing commits,
|
|
8
|
+
branches, merges, and cherry-pick operations. These diagrams provide a clear
|
|
9
|
+
visual representation of version control workflows, making them ideal for
|
|
10
|
+
documentation, tutorials, and code review discussions.
|
|
11
|
+
|
|
12
|
+
Git graphs are useful for:
|
|
13
|
+
|
|
14
|
+
* Documenting branching strategies and workflows
|
|
15
|
+
* Visualizing feature development and integration
|
|
16
|
+
* Creating tutorials on Git operations
|
|
17
|
+
* Illustrating merge and rebase scenarios
|
|
18
|
+
* Showing release management processes
|
|
19
|
+
* Explaining cherry-pick operations in pull requests
|
|
20
|
+
|
|
21
|
+
== Syntax specification
|
|
22
|
+
|
|
23
|
+
=== Diagram declaration
|
|
24
|
+
|
|
25
|
+
Git graphs are declared using the `gitGraph` keyword with optional orientation:
|
|
26
|
+
|
|
27
|
+
[source,mermaid]
|
|
28
|
+
----
|
|
29
|
+
gitGraph
|
|
30
|
+
<diagram-content>
|
|
31
|
+
----
|
|
32
|
+
|
|
33
|
+
==== Orientation
|
|
34
|
+
|
|
35
|
+
The layout direction can be specified immediately after the keyword:
|
|
36
|
+
|
|
37
|
+
[source,mermaid]
|
|
38
|
+
----
|
|
39
|
+
gitGraph LR:
|
|
40
|
+
<diagram-content>
|
|
41
|
+
----
|
|
42
|
+
|
|
43
|
+
Options:
|
|
44
|
+
|
|
45
|
+
* Default (no specification) - Top to bottom layout
|
|
46
|
+
* `TB:` or `BT:` - Top to bottom / bottom to top (vertical)
|
|
47
|
+
* `LR:` - Left to right (horizontal)
|
|
48
|
+
* `:` - Use default orientation
|
|
49
|
+
|
|
50
|
+
=== Commits
|
|
51
|
+
|
|
52
|
+
Commits are the basic building blocks of a git graph:
|
|
53
|
+
|
|
54
|
+
[source,mermaid]
|
|
55
|
+
----
|
|
56
|
+
commit
|
|
57
|
+
----
|
|
58
|
+
|
|
59
|
+
==== Commit with options
|
|
60
|
+
|
|
61
|
+
Commits can have custom identifiers, types, and tags:
|
|
62
|
+
|
|
63
|
+
[source,mermaid]
|
|
64
|
+
----
|
|
65
|
+
commit id: "abc123"
|
|
66
|
+
commit type: HIGHLIGHT
|
|
67
|
+
commit tag: "v1.0.0"
|
|
68
|
+
commit id: "Initial" type: NORMAL tag: "release"
|
|
69
|
+
----
|
|
70
|
+
|
|
71
|
+
Where:
|
|
72
|
+
|
|
73
|
+
`id`:: Custom identifier for the commit (quoted or unquoted string)
|
|
74
|
+
`type`:: Visual style of the commit (NORMAL, REVERSE, HIGHLIGHT)
|
|
75
|
+
`tag`:: Version tag or label displayed above the commit
|
|
76
|
+
|
|
77
|
+
=== Branches
|
|
78
|
+
|
|
79
|
+
==== Creating a branch
|
|
80
|
+
|
|
81
|
+
Create a new branch from the current branch:
|
|
82
|
+
|
|
83
|
+
[source,mermaid]
|
|
84
|
+
----
|
|
85
|
+
branch feature-x
|
|
86
|
+
----
|
|
87
|
+
|
|
88
|
+
==== Branch with ordering
|
|
89
|
+
|
|
90
|
+
Control the vertical positioning of branches:
|
|
91
|
+
|
|
92
|
+
[source,mermaid]
|
|
93
|
+
----
|
|
94
|
+
branch develop order: 1
|
|
95
|
+
branch feature order: 2
|
|
96
|
+
----
|
|
97
|
+
|
|
98
|
+
Lower order numbers appear higher in the diagram layout.
|
|
99
|
+
|
|
100
|
+
=== Switching branches
|
|
101
|
+
|
|
102
|
+
==== Checkout
|
|
103
|
+
|
|
104
|
+
Switch to an existing branch using `checkout`:
|
|
105
|
+
|
|
106
|
+
[source,mermaid]
|
|
107
|
+
----
|
|
108
|
+
checkout develop
|
|
109
|
+
----
|
|
110
|
+
|
|
111
|
+
==== Switch
|
|
112
|
+
|
|
113
|
+
Alternative syntax using `switch`:
|
|
114
|
+
|
|
115
|
+
[source,mermaid]
|
|
116
|
+
----
|
|
117
|
+
switch develop
|
|
118
|
+
----
|
|
119
|
+
|
|
120
|
+
Both `checkout` and `switch` are functionally equivalent.
|
|
121
|
+
|
|
122
|
+
=== Merge operations
|
|
123
|
+
|
|
124
|
+
Merge a branch into the current branch:
|
|
125
|
+
|
|
126
|
+
[source,mermaid]
|
|
127
|
+
----
|
|
128
|
+
merge feature-branch
|
|
129
|
+
----
|
|
130
|
+
|
|
131
|
+
==== Merge with options
|
|
132
|
+
|
|
133
|
+
Merges can have custom identifiers, types, and tags:
|
|
134
|
+
|
|
135
|
+
[source,mermaid]
|
|
136
|
+
----
|
|
137
|
+
merge feature id: "merge-1" type: HIGHLIGHT tag: "v2.0"
|
|
138
|
+
----
|
|
139
|
+
|
|
140
|
+
=== Cherry-pick operations
|
|
141
|
+
|
|
142
|
+
Cherry-pick commits from one branch to another:
|
|
143
|
+
|
|
144
|
+
[source,mermaid]
|
|
145
|
+
----
|
|
146
|
+
cherry-pick id: "abc123"
|
|
147
|
+
----
|
|
148
|
+
|
|
149
|
+
==== Cherry-pick with parent
|
|
150
|
+
|
|
151
|
+
Specify the parent commit for the cherry-pick:
|
|
152
|
+
|
|
153
|
+
[source,mermaid]
|
|
154
|
+
----
|
|
155
|
+
cherry-pick id: "commit-id" parent: "parent-id"
|
|
156
|
+
----
|
|
157
|
+
|
|
158
|
+
==== Cherry-pick with tag
|
|
159
|
+
|
|
160
|
+
Add a tag to a cherry-picked commit:
|
|
161
|
+
|
|
162
|
+
[source,mermaid]
|
|
163
|
+
----
|
|
164
|
+
cherry-pick id: "feature-commit" tag: "backport"
|
|
165
|
+
----
|
|
166
|
+
|
|
167
|
+
=== Commit types
|
|
168
|
+
|
|
169
|
+
Three visual styles are available for commits:
|
|
170
|
+
|
|
171
|
+
[cols="2,3"]
|
|
172
|
+
|===
|
|
173
|
+
|Type |Description
|
|
174
|
+
|
|
175
|
+
|`NORMAL`
|
|
176
|
+
|Default commit style with filled circle
|
|
177
|
+
|
|
178
|
+
|`REVERSE`
|
|
179
|
+
|Hollow circle with colored border
|
|
180
|
+
|
|
181
|
+
|`HIGHLIGHT`
|
|
182
|
+
|Emphasized commit with highlight color
|
|
183
|
+
|===
|
|
184
|
+
|
|
185
|
+
== Examples
|
|
186
|
+
|
|
187
|
+
=== Simple linear history
|
|
188
|
+
|
|
189
|
+
.Basic commit sequence
|
|
190
|
+
[example]
|
|
191
|
+
====
|
|
192
|
+
[source,mermaid]
|
|
193
|
+
----
|
|
194
|
+
gitGraph
|
|
195
|
+
commit id: "Initial commit"
|
|
196
|
+
commit id: "Add feature"
|
|
197
|
+
commit id: "Fix bug"
|
|
198
|
+
commit id: "Release" tag: "v1.0"
|
|
199
|
+
----
|
|
200
|
+
|
|
201
|
+
This creates a simple linear history with four commits, where the last commit
|
|
202
|
+
is tagged as version 1.0.
|
|
203
|
+
====
|
|
204
|
+
|
|
205
|
+
=== Feature branch workflow
|
|
206
|
+
|
|
207
|
+
.Creating and merging a feature branch
|
|
208
|
+
[example]
|
|
209
|
+
====
|
|
210
|
+
[source,mermaid]
|
|
211
|
+
----
|
|
212
|
+
gitGraph
|
|
213
|
+
commit id: "Initial"
|
|
214
|
+
branch develop
|
|
215
|
+
checkout develop
|
|
216
|
+
commit id: "Setup"
|
|
217
|
+
branch feature
|
|
218
|
+
checkout feature
|
|
219
|
+
commit id: "Implement feature"
|
|
220
|
+
commit id: "Add tests"
|
|
221
|
+
checkout develop
|
|
222
|
+
merge feature
|
|
223
|
+
checkout main
|
|
224
|
+
merge develop tag: "v1.0"
|
|
225
|
+
----
|
|
226
|
+
|
|
227
|
+
This demonstrates:
|
|
228
|
+
|
|
229
|
+
* Creating a develop branch from main
|
|
230
|
+
* Creating a feature branch from develop
|
|
231
|
+
* Working on the feature with multiple commits
|
|
232
|
+
* Merging the feature back to develop
|
|
233
|
+
* Merging develop to main with a release tag
|
|
234
|
+
====
|
|
235
|
+
|
|
236
|
+
=== Multiple parallel branches
|
|
237
|
+
|
|
238
|
+
.Working with multiple feature branches
|
|
239
|
+
[example]
|
|
240
|
+
====
|
|
241
|
+
[source,mermaid]
|
|
242
|
+
----
|
|
243
|
+
gitGraph
|
|
244
|
+
commit id: "Start"
|
|
245
|
+
branch feature-a
|
|
246
|
+
branch feature-b
|
|
247
|
+
checkout feature-a
|
|
248
|
+
commit id: "Feature A - Step 1"
|
|
249
|
+
commit id: "Feature A - Step 2"
|
|
250
|
+
checkout feature-b
|
|
251
|
+
commit id: "Feature B - Step 1"
|
|
252
|
+
checkout main
|
|
253
|
+
commit id: "Hotfix"
|
|
254
|
+
checkout feature-a
|
|
255
|
+
merge main id: "Sync hotfix"
|
|
256
|
+
commit id: "Feature A - Complete"
|
|
257
|
+
checkout main
|
|
258
|
+
merge feature-a
|
|
259
|
+
checkout feature-b
|
|
260
|
+
commit id: "Feature B - Complete"
|
|
261
|
+
checkout main
|
|
262
|
+
merge feature-b
|
|
263
|
+
----
|
|
264
|
+
|
|
265
|
+
This shows:
|
|
266
|
+
|
|
267
|
+
* Multiple feature branches created simultaneously
|
|
268
|
+
* Independent development on each branch
|
|
269
|
+
* Hotfix applied to main and synchronized to feature-a
|
|
270
|
+
* Sequential merging of completed features
|
|
271
|
+
====
|
|
272
|
+
|
|
273
|
+
=== Using commit types for emphasis
|
|
274
|
+
|
|
275
|
+
.Visual differentiation with commit types
|
|
276
|
+
[example]
|
|
277
|
+
====
|
|
278
|
+
[source,mermaid]
|
|
279
|
+
----
|
|
280
|
+
gitGraph
|
|
281
|
+
commit id: "Init"
|
|
282
|
+
commit id: "Regular work" type: NORMAL
|
|
283
|
+
branch feature
|
|
284
|
+
checkout feature
|
|
285
|
+
commit id: "Important change" type: HIGHLIGHT
|
|
286
|
+
commit id: "Experimental" type: REVERSE
|
|
287
|
+
commit id: "Feature done" type: HIGHLIGHT
|
|
288
|
+
checkout main
|
|
289
|
+
merge feature tag: "v2.0"
|
|
290
|
+
----
|
|
291
|
+
|
|
292
|
+
This demonstrates:
|
|
293
|
+
|
|
294
|
+
* `NORMAL` - Standard commits (default)
|
|
295
|
+
* `HIGHLIGHT` - Important or milestone commits
|
|
296
|
+
* `REVERSE` - Experimental or tentative commits
|
|
297
|
+
* Using types to visually distinguish commit importance
|
|
298
|
+
====
|
|
299
|
+
|
|
300
|
+
=== Cherry-pick operation
|
|
301
|
+
|
|
302
|
+
.Backporting a fix with cherry-pick
|
|
303
|
+
[example]
|
|
304
|
+
====
|
|
305
|
+
[source,mermaid]
|
|
306
|
+
----
|
|
307
|
+
gitGraph
|
|
308
|
+
commit id: "Base"
|
|
309
|
+
branch develop
|
|
310
|
+
checkout develop
|
|
311
|
+
commit id: "Feature 1"
|
|
312
|
+
commit id: "Feature 2"
|
|
313
|
+
commit id: "Critical fix"
|
|
314
|
+
checkout main
|
|
315
|
+
cherry-pick id: "Critical fix" tag: "backport"
|
|
316
|
+
checkout develop
|
|
317
|
+
commit id: "Feature 3"
|
|
318
|
+
----
|
|
319
|
+
|
|
320
|
+
This shows:
|
|
321
|
+
|
|
322
|
+
* Development happening on develop branch
|
|
323
|
+
* A critical fix committed to develop
|
|
324
|
+
* Cherry-picking the fix back to main
|
|
325
|
+
* Tagging the cherry-picked commit as a backport
|
|
326
|
+
* Continued development on develop branch
|
|
327
|
+
====
|
|
328
|
+
|
|
329
|
+
=== Complex workflow with tags and types
|
|
330
|
+
|
|
331
|
+
.Real-world release workflow
|
|
332
|
+
[example]
|
|
333
|
+
====
|
|
334
|
+
[source,mermaid]
|
|
335
|
+
----
|
|
336
|
+
gitGraph
|
|
337
|
+
commit id: "v0.1.0" tag: "v0.1.0"
|
|
338
|
+
branch develop
|
|
339
|
+
checkout develop
|
|
340
|
+
commit id: "Setup CI"
|
|
341
|
+
branch feature-auth
|
|
342
|
+
checkout feature-auth
|
|
343
|
+
commit id: "Add login" type: HIGHLIGHT
|
|
344
|
+
commit id: "Add logout"
|
|
345
|
+
checkout develop
|
|
346
|
+
branch feature-api
|
|
347
|
+
checkout feature-api
|
|
348
|
+
commit id: "API endpoint"
|
|
349
|
+
checkout develop
|
|
350
|
+
merge feature-auth
|
|
351
|
+
commit id: "Integration tests"
|
|
352
|
+
checkout main
|
|
353
|
+
commit id: "Security patch" type: HIGHLIGHT
|
|
354
|
+
checkout develop
|
|
355
|
+
merge main id: "Sync security"
|
|
356
|
+
merge feature-api
|
|
357
|
+
commit id: "Prepare release" type: HIGHLIGHT
|
|
358
|
+
checkout main
|
|
359
|
+
merge develop tag: "v1.0.0"
|
|
360
|
+
----
|
|
361
|
+
|
|
362
|
+
This comprehensive example includes:
|
|
363
|
+
|
|
364
|
+
* Initial release tag on main
|
|
365
|
+
* Develop branch for integration
|
|
366
|
+
* Multiple feature branches in parallel
|
|
367
|
+
* Security patch on main
|
|
368
|
+
* Synchronizing security patch to develop
|
|
369
|
+
* Merging features to develop
|
|
370
|
+
* Final release merge with version tag
|
|
371
|
+
* Using HIGHLIGHT type for important commits
|
|
372
|
+
====
|
|
373
|
+
|
|
374
|
+
=== Horizontal layout
|
|
375
|
+
|
|
376
|
+
.Left-to-right git graph
|
|
377
|
+
[example]
|
|
378
|
+
====
|
|
379
|
+
[source,mermaid]
|
|
380
|
+
----
|
|
381
|
+
gitGraph LR:
|
|
382
|
+
commit id: "Start"
|
|
383
|
+
branch feature
|
|
384
|
+
checkout feature
|
|
385
|
+
commit id: "Work"
|
|
386
|
+
commit id: "More work"
|
|
387
|
+
checkout main
|
|
388
|
+
merge feature tag: "done"
|
|
389
|
+
----
|
|
390
|
+
|
|
391
|
+
This demonstrates:
|
|
392
|
+
|
|
393
|
+
* Horizontal layout using `LR:` orientation
|
|
394
|
+
* Better for wide displays or documentation
|
|
395
|
+
* Same functionality as vertical layout
|
|
396
|
+
====
|
|
397
|
+
|
|
398
|
+
== Features
|
|
399
|
+
|
|
400
|
+
=== Automatic branch creation
|
|
401
|
+
|
|
402
|
+
Branches are created automatically when first referenced:
|
|
403
|
+
|
|
404
|
+
[source,mermaid]
|
|
405
|
+
----
|
|
406
|
+
gitGraph
|
|
407
|
+
commit
|
|
408
|
+
branch feature
|
|
409
|
+
checkout feature
|
|
410
|
+
commit
|
|
411
|
+
----
|
|
412
|
+
|
|
413
|
+
The `main` branch exists by default as the starting point.
|
|
414
|
+
|
|
415
|
+
=== Branch naming
|
|
416
|
+
|
|
417
|
+
Branch names can contain letters, numbers, hyphens, and underscores:
|
|
418
|
+
|
|
419
|
+
[source,mermaid]
|
|
420
|
+
----
|
|
421
|
+
gitGraph
|
|
422
|
+
branch feature-123
|
|
423
|
+
branch bug_fix_2
|
|
424
|
+
branch dev-v2
|
|
425
|
+
----
|
|
426
|
+
|
|
427
|
+
=== Commit identifiers
|
|
428
|
+
|
|
429
|
+
Commit IDs can be quoted or unquoted:
|
|
430
|
+
|
|
431
|
+
[source,mermaid]
|
|
432
|
+
----
|
|
433
|
+
gitGraph
|
|
434
|
+
commit id: abc123
|
|
435
|
+
commit id: "commit with spaces"
|
|
436
|
+
commit id: 'single-quoted'
|
|
437
|
+
----
|
|
438
|
+
|
|
439
|
+
=== Multiple options
|
|
440
|
+
|
|
441
|
+
Commits and merges can have multiple options:
|
|
442
|
+
|
|
443
|
+
[source,mermaid]
|
|
444
|
+
----
|
|
445
|
+
gitGraph
|
|
446
|
+
commit id: "feat-1" type: HIGHLIGHT tag: "milestone"
|
|
447
|
+
branch develop
|
|
448
|
+
checkout develop
|
|
449
|
+
commit
|
|
450
|
+
checkout main
|
|
451
|
+
merge develop id: "release" type: HIGHLIGHT tag: "v1.0"
|
|
452
|
+
----
|
|
453
|
+
|
|
454
|
+
=== Branch ordering
|
|
455
|
+
|
|
456
|
+
Control visual layout with order numbers:
|
|
457
|
+
|
|
458
|
+
[source,mermaid]
|
|
459
|
+
----
|
|
460
|
+
gitGraph
|
|
461
|
+
branch hotfix order: 0
|
|
462
|
+
branch main order: 1
|
|
463
|
+
branch develop order: 2
|
|
464
|
+
branch feature order: 3
|
|
465
|
+
----
|
|
466
|
+
|
|
467
|
+
Lower numbers appear higher in the vertical layout.
|
|
468
|
+
|
|
469
|
+
== Limitations
|
|
470
|
+
|
|
471
|
+
=== Currently not supported
|
|
472
|
+
|
|
473
|
+
The following Mermaid git graph features are not yet supported in Sirena:
|
|
474
|
+
|
|
475
|
+
* Comments using `%%`
|
|
476
|
+
* Custom styling with themes beyond built-in types
|
|
477
|
+
* Click events and links
|
|
478
|
+
* Custom branch colors
|
|
479
|
+
* Parallel merge visualization options
|
|
480
|
+
|
|
481
|
+
=== Known issues
|
|
482
|
+
|
|
483
|
+
* Very complex graphs with many branches may require manual ordering
|
|
484
|
+
* Long commit IDs may overlap in compact layouts
|
|
485
|
+
* Cherry-pick visualization is simplified compared to actual Git behavior
|
|
486
|
+
|
|
487
|
+
== Best practices
|
|
488
|
+
|
|
489
|
+
=== Use meaningful commit IDs
|
|
490
|
+
|
|
491
|
+
Choose descriptive identifiers for important commits:
|
|
492
|
+
|
|
493
|
+
[source,mermaid]
|
|
494
|
+
----
|
|
495
|
+
%% Good
|
|
496
|
+
gitGraph
|
|
497
|
+
commit id: "Initial setup"
|
|
498
|
+
commit id: "Add authentication"
|
|
499
|
+
commit id: "Fix login bug"
|
|
500
|
+
|
|
501
|
+
%% Less clear
|
|
502
|
+
gitGraph
|
|
503
|
+
commit id: "a1b2c3"
|
|
504
|
+
commit id: "commit2"
|
|
505
|
+
commit id: "fix"
|
|
506
|
+
----
|
|
507
|
+
|
|
508
|
+
=== Tag releases and milestones
|
|
509
|
+
|
|
510
|
+
Use tags to mark important points in history:
|
|
511
|
+
|
|
512
|
+
[source,mermaid]
|
|
513
|
+
----
|
|
514
|
+
gitGraph
|
|
515
|
+
commit id: "Development"
|
|
516
|
+
commit id: "Feature complete" tag: "RC1"
|
|
517
|
+
commit id: "Bug fixes"
|
|
518
|
+
commit id: "Production ready" tag: "v1.0.0"
|
|
519
|
+
----
|
|
520
|
+
|
|
521
|
+
=== Use commit types strategically
|
|
522
|
+
|
|
523
|
+
Apply types to emphasize important commits:
|
|
524
|
+
|
|
525
|
+
* `HIGHLIGHT` - Major features, releases, critical fixes
|
|
526
|
+
* `REVERSE` - Experimental changes, work-in-progress
|
|
527
|
+
* `NORMAL` - Regular development work (default)
|
|
528
|
+
|
|
529
|
+
[source,mermaid]
|
|
530
|
+
----
|
|
531
|
+
gitGraph
|
|
532
|
+
commit type: NORMAL
|
|
533
|
+
commit type: HIGHLIGHT id: "Major feature" tag: "beta"
|
|
534
|
+
commit type: REVERSE id: "Experimental API"
|
|
535
|
+
commit type: NORMAL
|
|
536
|
+
----
|
|
537
|
+
|
|
538
|
+
=== Keep branch names concise
|
|
539
|
+
|
|
540
|
+
Use short, descriptive branch names:
|
|
541
|
+
|
|
542
|
+
[source,mermaid]
|
|
543
|
+
----
|
|
544
|
+
%% Good
|
|
545
|
+
gitGraph
|
|
546
|
+
branch feature-auth
|
|
547
|
+
branch hotfix-login
|
|
548
|
+
branch release-2.0
|
|
549
|
+
|
|
550
|
+
%% Too verbose
|
|
551
|
+
gitGraph
|
|
552
|
+
branch feature-implement-user-authentication-system
|
|
553
|
+
branch hotfix-fix-the-login-page-redirect-issue
|
|
554
|
+
----
|
|
555
|
+
|
|
556
|
+
=== Order branches logically
|
|
557
|
+
|
|
558
|
+
Use branch ordering for clarity:
|
|
559
|
+
|
|
560
|
+
[source,mermaid]
|
|
561
|
+
----
|
|
562
|
+
gitGraph
|
|
563
|
+
branch main order: 0
|
|
564
|
+
branch release order: 1
|
|
565
|
+
branch develop order: 2
|
|
566
|
+
branch feature order: 3
|
|
567
|
+
branch hotfix order: 4
|
|
568
|
+
----
|
|
569
|
+
|
|
570
|
+
This creates a logical top-to-bottom hierarchy.
|
|
571
|
+
|
|
572
|
+
=== Show complete workflows
|
|
573
|
+
|
|
574
|
+
Include all steps in your workflow:
|
|
575
|
+
|
|
576
|
+
[source,mermaid]
|
|
577
|
+
----
|
|
578
|
+
gitGraph
|
|
579
|
+
commit id: "Start"
|
|
580
|
+
branch develop
|
|
581
|
+
checkout develop
|
|
582
|
+
commit id: "Work"
|
|
583
|
+
checkout main
|
|
584
|
+
merge develop
|
|
585
|
+
----
|
|
586
|
+
|
|
587
|
+
Don't leave workflows incomplete or ambiguous.
|
|
588
|
+
|
|
589
|
+
=== Choose appropriate orientation
|
|
590
|
+
|
|
591
|
+
Select layout based on your medium:
|
|
592
|
+
|
|
593
|
+
* Vertical (default) - Better for most documentation
|
|
594
|
+
* Horizontal (`LR:`) - Better for wide screens or presentations
|
|
595
|
+
|
|
596
|
+
== Related documentation
|
|
597
|
+
|
|
598
|
+
* <<index.adoc#,Diagram types overview>>
|
|
599
|
+
* <<flowchart.adoc#,Flowchart diagrams>>
|
|
600
|
+
* link:https://mermaid.js.org/syntax/gitgraph.html[Official Mermaid git graph documentation]
|