gitinfo2 Отображать только ветку, не находящуюся на master

gitinfo2 Отображать только ветку, не находящуюся на master

В настоящее время я использую gitinfo2пакет в своем документе для отображения текущей ревизии git, ветки и даты. Однако я хотел бы отображать ветку только в том случае, если я не нахожусь на ветке master. Это потребует некоторого условного переноса, \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}

Результат

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