-
Notifications
You must be signed in to change notification settings - Fork 29
Home
Jubobs edited this page Feb 3, 2015
·
10 revisions
This wiki is under construction. (Duh!)
gitdags
is a LaTeX2e package built on top of TikZ/PGF v3.0 that allows you to effortlessly produce pretty, vector-graphics, educational Git history graphs. You should find it convenient for demonstrating the effects of Git commands such as checkout
, reset
, merge
, rebase
, etc. on a repository.
Automatic generation of history graphs of repositories is not the purpose of gitdags
.
To use gitdags
, you need
- a LaTeX distribution,
- the
tikz
package (v3.0 or later), - the
xcolor-solarized
package.
I plan to release the package on CTAN in the near future. It should then find its way into popular TeX distributions, such as TeX Live and MiKTeX, soon after.
The code below, compiled with pdflatex
, will produce the graph shown above.
\documentclass{article}
\usepackage{subcaption}
\usepackage{gitdags}
\begin{document}
\begin{figure}
\begin{subfigure}[b]{\textwidth}
\centering
\begin{tikzpicture}
% Commit DAG
\gitDAG[grow right sep = 2em]{
A -- B -- {
C,
D -- E,
}
};
% Tag reference
\gittag
[v0p1] % node name
{v0.1} % node text
{above=of A} % node placement
{A} % target
% Remote branch
\gitremotebranch
[origmaster] % node name
{origin/master} % node text
{above=of C} % node placement
{C} % target
% Branch
\gitbranch
{master} % node name and text
{above=of E} % node placement
{E} % target
% HEAD reference
\gitHEAD
{above=of master} % node placement
{master} % target
\end{tikzpicture}
\subcaption{Before\ldots}
\end{subfigure}
\begin{subfigure}[b]{\textwidth}
\centering
\begin{tikzpicture}
\gitDAG[grow right sep = 2em]{
A -- B -- {
C -- D' -- E',
{[nodes=unreachable] D -- E },
}
};
% Tag reference
\gittag
[v0p1] % node name
{v0.1} % node text
{above=of A} % node placement
{A} % target
% Remote branch
\gitremotebranch
[origmaster] % node name
{origin/master} % node text
{above=of C} % node placement
{C} % target
% Branch
\gitbranch
{master} % node name and text
{above=of E'} % node placement
{E'} % target
% HEAD reference
\gitHEAD
{above=of master} % node placement
{master} % target
\end{tikzpicture}
\subcaption{\ldots{} and after \texttt{git rebase origin/master}}
\end{subfigure}
\caption{Demonstrating a typical \texttt{rebase}}
\end{figure}
\end{document}