¿Existe una forma limpia de crear ramas compensadas en gitdags?

¿Existe una forma limpia de crear ramas compensadas en gitdags?

Julien Cretel creó el elegantegitdagspaquete para generar fácilmente gráficos educativos de git, que estoy usando actualmente para crear materiales educativos y de referencia para mi equipo.

Cuando hablo de bifurcaciones en algún contexto, me gusta agregar un "torcedura" al gráfico para reforzar visualmente la idea de que una rama representa una línea de desarrollo y que otros trabajos podrían continuar al mismo tiempo.

Gráfico de Git con rama "kink"

¿Existe una manera limpia de decirle a gitdags/TikZ que desplace un nodo verticalmente como este?

Respuesta1

No sé si esto cuenta como "limpiador" (y tampoco conozco el gitdagspaquete) pero de todos modos:

\documentclass[tikz,border=5]{standalone}
\usepackage{gitdags}
\tikzgraphsset{%
  nudge/.style={/tikz/shift={#1}},
  nudge down/.style={nudge=(270:#1)},
  nudge down/.default=1
}
\begin{document}
\begin{tikzpicture}
\gitDAG[grow right sep = 2em]{
  {[nodes=placeholder commits] "..."}  -- A -- B -- C -- 
  {[nudge down]
    D -- E;
  }
};
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

Mi solución actual, utilizada para generar el gráfico en la pregunta, es crear un nodo invisible a lo largo de la rama maestra, lo que fuerza al nodo Da pasar a la siguiente fila:

\gitDAG[grow right sep = 2em]{
  {[nodes=placeholder commits] "..." } -- A -- B -- C -- {
    "" [placeholder];
    D [>opacity=0.75] -- E;
  }
};

El "" [placeholder];bit crea el nodo invisible después Cde la rama maestra; Drepresenta una línea paralela de desarrollo y por lo tanto está alineada verticalmente con el nodo invisible.

Este truco hace el trabajo pero parece muy complicado, especialmente porque tenemos que restablecer la opacidad del borde cuando terminamos ( [>opacity=0.75]). Sin este reinicio, los nodos Dy Ese representarán, pero sus bordes no.

información relacionada