![使用 shell 脚本从 git 中提取“标签”信息](https://linux22.com/image/42406/%E4%BD%BF%E7%94%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%BB%8E%20git%20%E4%B8%AD%E6%8F%90%E5%8F%96%E2%80%9C%E6%A0%87%E7%AD%BE%E2%80%9D%E4%BF%A1%E6%81%AF.png)
这风险投资捆绑是一个简洁的小包,可以提取有关 git 存储库的信息,以便轻松插入到 LaTeX 文档中。它当前不提取有关当前提交是否已标记以及标记名称是什么的信息。我将如何编辑vc
脚本来做到这一点?
然后我将如何编辑vc-git.awk
脚本以向生成的 vc.tex 文件添加额外的行?想必我想要一条看起来像这样的行:
print "\\gdef\\GITTag{" Tag "}%"
但我需要更早的一行来告诉 awk 是什么" Tag "
意思?
这不是关于 LaTeX 的问题,而是关于 git、awk 和 bash 的问题......
答案1
git log --decorate -1 [commit]
如果commit
(HEAD
如果省略)有标签,则提交哈希后面将跟着(tag: name)
(也可能有多个其他符号引用)。你可以更具体地选择这个
git log --pretty=%d
答案2
您可以通过以下方式获取提交标记指向的内容:
git show -s 'TAG_NAME^{commit}' --format='%H'
不幸的是,我担心检查是否提交的唯一方法是标记它以检查所有标签。
答案3
您可以使用 来从提交中获取标签名称name-rev
。
git name-rev <commit> --tags
一个例子:
$ git name-rev fcfeabe --tags
fcfeabe tags/v2.36-beta2
因此,只获取标签:
git name-rev fcfeabe --tags | awk '{sub("tags/", ""); print $2}'