3

我想可靠地解析出 git 标签的注释。

我目前使用“git show --summary”,它将在指向带有另一个标签的提交的标签上产生以下输出。

我想要的是附加到提交的所有标签的标签名称、标签时间戳和标签注释。

我得到的是:

% git show --summary CANCEL_test_annotated3
标签 CANCEL_test_annotated3
标签: 克里斯蒂安·格策
日期:2013 年 5 月 25 日星期六 09:54:59 -0700

测试多行消息

身体线条 1
身体线条 2
身体线条 3

标签 CANCEL_test_annotated
标签: 克里斯蒂安·格策
日期:2013 年 5 月 25 日星期六 09:26:56 -0700

取代消息

提交 b9dc6956eac2c8abb7ed1f6b556a18debfed909b
作者:克里斯蒂安·格策
日期:2013 年 5 月 24 日星期五 14:35:31 -0700

    修复一些剪切和粘贴错误

可以说,解析这个并不难,但我可能成为带内信息的受害者。

我尝试使用--format,但似乎没有用于标记注释的格式说明符,似乎也没有用于标记时间的格式说明符。

那么,这样做的正确方法是什么?

4

2 回答 2

4

对于原始标签数据,您应该解析此命令的输出。

git cat-file tag <tag-id>

它不会为人类提供任何“漂亮的打印”,因此更适合机器解析。

于 2013-05-28T20:05:23.870 回答
0

想法:

git show --color=always, 带内 ANSI 序列似乎真的不太可能——您可以区分 and 的结果--color=always--color=never这将不理会消息正文,差异将是所有标题行。

或者git cat-file -p单独对每个标签进行操作。

于 2013-05-28T20:03:08.743 回答