ifthen-Bedingung schlägt für Gitinfo2-Metadaten fehl

ifthen-Bedingung schlägt für Gitinfo2-Metadaten fehl

Ich verwende das gitinfo2Paket (2.0.7) zusammen mit dem ifthenPaket (v1.1c), beide von TeXLive 2017, um Git-Metadaten in mein Dokument einzubinden:

\documentclass{article}
\usepackage[local]{gitinfo2}
\usepackage{ifthen}
\begin{document}
commit \gitAbbrevHash
\ifthenelse{\equal{\gitBranch}{master}}{}{ on branch \gitBranch}%
\ifthenelse{\equal{\gitDirty}{}}{}{ with local changes}
\end{document}

Die Absicht ist, dass der Name des Zweigs ausgegeben wird, aber nur, wenn es sich nicht um den Master-Zweig handelt. Für das Beispiel würde ich also nur „commit e78b91e“ erwarten. Das Ergebnis ist jedoch „commit e78b91e on branch master“.

Mit anderen Worten, der Test für \gitBranchergibt immer „false“ (während der Test für \gitDirtykorrekt funktioniert). Was übersehe ich?

Hier ist der Inhalt der gitHeadLocal.ginDatei:

\usepackage[%
    shash={e78b91e},
    lhash={e78b91e0e8582d75273ad4f04bda5ae3c52055bd},
    authname={Abcd Efgh},
    authemail={[email protected]},
    authsdate={2018-02-19},
    authidate={2018-02-19 20:00:05 +0100},
    authudate={1519066805},
    commname={Abcd Efgh},
    commemail={[email protected]},
    commsdate={2018-02-19},
    commidate={2018-02-19 20:02:01 +0100},
    commudate={1519066921},
    refnames={ (HEAD -> master)},
    firsttagdescribe={e78b91e},
    reltag={e78b91e}
]{gitexinfo}

Antwort1

Wenn das Paket festlegt

 \gitBranch=\long macro: ->\detokenize \expandafter {\bcut }

Dann erhalten Sie dasselbe Problem, das beim Versuch auftritt, den aktuellen Dateinamen zu testen, da \jobnamealle Zeichen Catcode 12 (wie Satzzeichen) und nicht Catcode 11 (Buchstaben) sind. Sie können jedoch dasselbe \detokenizeE-Tex-Grundelement verwenden, um eine Testzeichenfolge mit Catcode 12 zu erhalten. Testen Sie dagegen \detokenize{master}statt dagegen master.

verwandte Informationen