
Ich verwende das gitinfo2
Paket (2.0.7) zusammen mit dem ifthen
Paket (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 \gitBranch
ergibt immer „false“ (während der Test für \gitDirty
korrekt funktioniert). Was übersehe ich?
Hier ist der Inhalt der gitHeadLocal.gin
Datei:
\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 \jobname
alle Zeichen Catcode 12 (wie Satzzeichen) und nicht Catcode 11 (Buchstaben) sind. Sie können jedoch dasselbe \detokenize
E-Tex-Grundelement verwenden, um eine Testzeichenfolge mit Catcode 12 zu erhalten. Testen Sie dagegen \detokenize{master}
statt dagegen master
.