gitinfo2 仅在不在主控上时显示分支

gitinfo2 仅在不在主控上时显示分支

我目前正在使用gitinfo2文档中的包来显示当前的 git 修订、分支和日期。但是,如果我不在主分支上,我只想显示分支。这将需要一些条件包装,\gitBranch但我无法弄清楚。

梅威瑟:

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

到目前为止,我已经尝试过这个,但没有成功:

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

答案1

有两个问题:

  • 该测试\if会扩展下一个标记,直到找到两个不可扩展的标记以供比较。因此,它不能用于比较宏定义。 switch\ifx更适合这里,因为它会比较接下来的两个标记而不进行扩展。

  • \gitBranch不直接包含分支的名称,而是使用可扩展的(我希望总是)宏来获取名称。还\detokenize用于将字符转换为类别代码为 12(其他)的标记,如数字和标点符号。

这意味着:

  • 使用\ifx代替\if
  • \edef\gitBranch{\gitBranch}获取具有扩展分支名称的宏。
  • \edef\branchMaster{\detokenize{master}}以获得正确的类别代码。

结果:

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

结果

相关内容