gitinfo2 Solo muestra la rama cuando no está en el maestro

gitinfo2 Solo muestra la rama cuando no está en el maestro

Actualmente estoy usando el gitinfo2paquete en mi documento para mostrar la revisión, rama y fecha actual de git. Sin embargo, sólo me gustaría mostrar la rama si no estoy en la rama maestra. Esto requerirá algunos ajustes condicionales, \gitBranchpero no pude resolverlo.

MWE:

\documentclass{scrbook}

\usepackage{gitinfo2}
% additional install is required. See package documentation for details.

\begin{document}
\begin{titlepage}
\centering
\ \\
\vspace{5cm}
{\Huge Document title}
\vspace{5cm}

Revision: \gitAbbrevHash on branch \gitBranch \ \gitCommitterDate

\end{titlepage}

Some text.

\end{document}

Hasta ahora he probado esto sin éxito:

\documentclass{scrbook}

\usepackage{gitinfo2}
% additional install is required. See package documentation for details.
\newcommand{\masterBranch}{master}

\begin{document}
\begin{titlepage}
\centering
\ \\
\vspace{5cm}
{\Huge Document title}
\vspace{5cm}

Revision: \gitAbbrevHash

\if\gitBranch\masterBranch
\else
    on branch \gitBranch
\fi

\ \gitCommitterDate

\end{titlepage}

Some text.

\end{document}

Respuesta1

Hay dos cuestiones:

  • La prueba \ifexpande los siguientes tokens hasta que encuentra dos tokens no expandibles para comparar. Por lo tanto, no se puede utilizar para comparar definiciones de macros. El interruptor \ifxes más adecuado aquí, porque compara los dos tokens siguientes sin expandirse.

  • \gitBranchno contiene el nombre de la rama directamente, sino que utiliza macros expandibles (espero que siempre) para obtener el nombre. También \detokenizese utiliza para convertir los caracteres en tokens con el código de categoría 12 (otros), como dígitos y caracteres de puntuación.

Eso significa:

  • Uso de \ifxen lugar de \if.
  • \edef\gitBranch{\gitBranch}para obtener una macro con el nombre de la rama expandida.
  • \edef\branchMaster{\detokenize{master}}para obtener los códigos de categoría correctos.

Resultado:

\documentclass{scrbook}

\usepackage{gitinfo2}

\edef\masterBranch{\detokenize{master}}
\edef\gitBranch{\gitBranch}

\begin{document}
Revision: \gitAbbrevHash\ %
%
\ifx\gitBranch\masterBranch
\else
    on branch \gitBranch\ %
\fi
%
\gitCommitterDate
\end{document}

Resultado

información relacionada