这是我第一次在这样的网站上提问。请告诉我是否应该做些不同的事情,谢谢!
我想将 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}