如何将外部 git 哈希的一部分作为文本包含在文档中?

如何将外部 git 哈希的一部分作为文本包含在文档中?

这是我第一次在这样的网站上提问。请告诉我是否应该做些不同的事情,谢谢!

我想将 git 中最新提交哈希的简短版本作为文本字符串包含在 (Xe)LaTeX 文档中。我该怎么做?

我可以简单地使用以下命令包含完整的哈希值:

\input{.git/ORIG_HEAD}

但是当我从宏中获取字符串时,我无法弄清楚如何使用xstring包缩短哈希值。我目前有的是:

\usepackage{xstring}

\expandarg %% Not at all sure about this command
\StrLeft{\input{.git/ORIG_HEAD}}{8}[\gitrevision]

I would prefer \gitrevision\ to be a short hash.

非常感谢能修复上述代码,因为该代码是根据我的思维方式构建的。是的,我读了手册,但我认为它缺乏简单实用的用法示例。

当然,我们也欢迎完全不同的(可行的)解决方案!

bash最后要说的是,我可以用外部脚本和/或宏轻松完成所有这些操作\write18,但我对自己施加了限制,在这种情况下只能依赖 TeX。否则我永远学不到更多。非常感谢您花时间阅读这个问题!

答案1

git在文档中包含元数据的更通用的解决方案是gitinfo2使用包(它取代了gitinfo我在评论中提到的包)。设置好后,\gitAbbrevHash会给出一个七字符的哈希值。


可能有更优雅的方法来实现这一点,但作为一种解决方法,您可以使用catchfile包将完整的哈希存储在宏中,并在中使用该宏\StrLeft

在此处输入图片描述

\documentclass{article}
\usepackage{xstring}
\usepackage{catchfile}
\CatchFileDef{\HEAD}{.git/refs/heads/master}{}
\newcommand{\gitrevision}{%
  \StrLeft{\HEAD}{7}%
}

\begin{document}

Long: \HEAD

Short: \gitrevision
\end{document}

相关内容