ifthen условие не выполняется для метаданных gitinfo2

ifthen условие не выполняется для метаданных gitinfo2

Я использую gitinfo2пакет (2.0.7) вместе с ifthenпакетом (v1.1c), оба из TeXLive 2017, чтобы включить метаданные Git в свой документ:

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

Цель состоит в том, чтобы вывести имя ветки, но только если это не главная ветка. Поэтому для примера я бы ожидал только "commit e78b91e". Однако результатом будет "commit e78b91e on branch master".

Другими словами, тест на \gitBranchвсегда дает ложный результат (тогда как тест на \gitDirtyработает правильно). Что я упускаю?

Вот содержимое файла gitHeadLocal.gin:

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

решение1

Если пакет устанавливает

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

Затем вы столкнетесь с той же проблемой, которая возникает при попытке проверить текущее имя файла, поскольку \jobnameвсе символы имеют код catcode 12 (например, знаки препинания), а не код catcode 11 (буквы). Однако вы можете использовать тот же \detokenizeпримитив e-tex, чтобы получить тестовую строку с кодом catcode 12, \detokenize{master}а не с master.

Связанный контент