ifthen 条件对于 gitinfo2 元数据失败

ifthen 条件对于 gitinfo2 元数据失败

我正在使用来自 TeXLive 2017 的gitinfo2包 (2.0.7) 和ifthen包 (v1.1c),以便在我的文档中包含 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}

目的是打印分支的名称,但前提是它不是主分支。因此,对于该示例,我仅期望“提交 e78b91e”。但是,结果是“在分支 master 上提交 e78b91e”。

换句话说, 的测试结果\gitBranch始终为 false(而 的测试结果\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(字母),但是您可以使用相同的\detokenizee-tex 原语来获取 catcode 12 测试字符串,\detokenize{master}而不是进行测试master

相关内容