gitinfo2 Zweig nur anzeigen, wenn nicht auf Master

gitinfo2 Zweig nur anzeigen, wenn nicht auf Master

Ich verwende das gitinfo2Paket derzeit in meinem Dokument, um die aktuelle Git-Revision, den aktuellen Zweig und das aktuelle Datum anzuzeigen. Ich möchte den Zweig jedoch nur anzeigen, wenn ich mich nicht im Master-Zweig befinde. Dies erfordert eine gewisse bedingte Umschließung, \gitBranchaber ich konnte das nicht herausfinden.

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}

Bisher habe ich dies ohne Erfolg versucht:

\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}

Antwort1

Es gibt zwei Probleme:

  • Der Test \ifexpandiert die nächsten Token, bis er zwei nicht expandierbare Token zum Vergleich findet. Er kann daher nicht zum Vergleichen von Makrodefinitionen verwendet werden. Der Schalter \ifxist hier besser geeignet, da er die nächsten beiden Token vergleicht, ohne sie zu expandieren.

  • \gitBranchenthält den Namen des Zweigs nicht direkt, sondern verwendet erweiterbare (hoffentlich immer) Makros, um den Namen abzurufen. \detokenizeWird auch verwendet, um die Zeichen in Token mit Kategoriecode 12 (andere) umzuwandeln, wie Ziffern und Satzzeichen.

Das bedeutet:

  • Verwendung von \ifxanstelle von \if.
  • \edef\gitBranch{\gitBranch}um ein Makro mit dem erweiterten Zweignamen zu erhalten.
  • \edef\branchMaster{\detokenize{master}}um die richtigen Kategoriencodes zu erhalten.

Ergebnis:

\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}

Ergebnis

verwandte Informationen