Commit a656ad46 authored by Lukas Nagel's avatar Lukas Nagel
Browse files

init ProjectGraph with git concepts

parent 4ce4a42c
% vim: foldmethod=indent foldlevel=99
\documentclass[tikz, border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes}
\usetikzlibrary{arrows}
\definecolor{rootcolor}{named}{black}
\begin{document}
\begin{tikzpicture}
[ example/.style=
{ rectangle split
, rectangle split parts=2
, text width=4cm
, align=left
, draw=black
, fill=orange!10
, every one node part/.append style=
{ font=\small\sffamily
}
, every two node part/.style=
{ font=\tiny\sffamily
}
}
, concept/.style=
{ circle
, fill=black!40
, draw=none, thin
, minimum size=3cm
, node distance=2cm
}
, neutral/.append style=
{ fill=green!40
}
, vcs/.append style=
{ fill=purple!40
}
, git/.append style=
{ fill=orange!40
}
, wf/.append style=
{ fill=red!40
}
]
\node[concept, vcs] (vcs) {
SCM / VCS
};
\node[concept, vcs, below left=of vcs, xshift= 2cm] (integrity) {
Integrität
};
\node[concept, vcs, below left=of vcs, xshift=-2cm] (nachvollziehbarkeit) {
Nachvollziehbarkeit
};
\node[concept, vcs, below left=of vcs, xshift=-6cm] (resetability) {
Wiederherstellbarkeit
};
\node[concept, vcs, below left=of vcs, xshift= 6cm] (collaboration) {
Kollaboration
};
\node[example, above left=of vcs] (einstieg) {
\nodepart{one} Bsp.: Dokument Bearbeiten
\nodepart{two}
Alice bearbeitet Dokument und erstellt Sicherungs
Kopien um Änderungen zu revidieren.
Zu viele Dateien, daher in unterverzeichnis,
um platz zu sparenr noch eben zippen.
Witz: Mag absurd klingen, aber laut StackOverflow
umfragen operieren so 8\% der Befragten!
};
{
\node[concept, git, right=10cm of vcs] (git) {
Git Projekt
};
\node[example, above left=of git] (resolution) {
\nodepart{one} Auflöung: Dokument Bearbeiten
\nodepart{two} Git arbeitet fast genau so!
};
\node[concept, neutral, below right=of vcs, yshift=-6cm] (file) {
Datei
};
\node[concept, neutral, below left=of file] (dirnode) {
Verzeichnis
};
\node[concept, git, below left=of git] (workingtree) {
Arbeitsverzeichnis
};
\node[concept, git, below=of git] (repository) {
Repository
};
\node[concept, git, below right=of repository, yshift=-2cm] (reference) {
Referenz
};
{
\node[concept, git, below left=of repository, yshift=-2cm] (object) {
object
};
\node[concept, git, below=of repository] (hash) {
Hash
};
\node[concept, git, below right=of object] (commit) {
commit
};
\node[concept, git, right=of commit] (parent) {
Vorgänger
};
\node[concept, git, right=of parent] (history) {
History
};
\node[concept, neutral, below=of history] (dag) {
DAG
};
\node[concept, git, below left=of object] (blob) {
blob
};
\node[concept, git, below=of object] (tree) {
tree
};
}
\node[concept, git, below right=of git] (index) {
Index
};
}
\node[concept, wf, right=12cm of git] (workflows) {
Workflows
};
\node[example, above left=of workflows] (aufgriff) {
\nodepart{one} Verwenden: Dokument Bearbeiten
\nodepart{two} Beispiel aufgreifen für Demos
};
\node[concept, right=6cm of workflows] (github) {
GitHub
};
\node[example, above left=of github] (erweiterung) {
\nodepart{one} Erweitern: Dokument Bearbeiten
\nodepart{two} Nun das beispiel um kollaboration mit Bob erweitern
};
\draw[->, line width=1.2pt, nodes={midway}]
(vcs) edge node {} (integrity)
(vcs) edge[bend left=30] node {} (collaboration)
(vcs) edge[bend right=30] node {} (resetability)
(vcs) edge[bend right=30] node {} (nachvollziehbarkeit)
(vcs) edge[bend left=60] node {} (file)
;
% UML like aggregation, ie. directory aggregates files
\draw[-open diamond, line width=1.2pt, nodes={midway}]
(repository) edge node {} (object)
(repository) edge node {} (reference)
(commit) edge[bend left=15] node {} (parent)
(commit) edge node {} (tree)
(dirnode) edge node {} (file)
(dirnode) edge[loop left] node {} (dirnode)
;
% UML like inheritance, ie. commit is instance of blob
\draw[->, line width=1.2pt, nodes={midway}]
(git) edge node {} (workingtree)
(git) edge node {} (repository)
(git) edge node {} (index)
(reference) edge node {} (hash)
(hash) edge node {} (object)
(workingtree) edge[bend right=30] node {} (tree)
(dag) edge node {} (history)
(blob) edge node {} (file)
(tree) edge[bend left=45] node {} (dirnode)
(parent) edge[bend left=15] node {} (commit)
(parent) edge node {} (dag)
;
\draw[-open triangle 90,line width=1.2pt, nodes={midway}]
(object) edge[] node {} (commit)
(object) edge[] node {} (blob)
(object) edge[] node {} (tree)
;
\draw[->, line width=4pt, draw=black!90, nodes={midway}]
(vcs) edge (git)
(git) edge (workflows)
(workflows) edge (github)
;
\draw[->, dashed, line width=1.2pt, nodes={midway}]
(einstieg) edge (vcs)
(resolution) edge (git)
(aufgriff) edge (workflows)
(erweiterung) edge (github)
;
\begin{pgfonlayer}{background}
\draw[->, draw=black!30, line width=4pt, nodes={midway}]
(integrity) edge node {} (hash)
(integrity) edge node {} (parent)
(vcs) edge node {} (history)
;
\end{pgfonlayer}
\end{tikzpicture}
\end{document}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment