如何解析“git show”输出?

时间:2013-05-28 19:33:35

标签: git

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

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

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

我得到的是:

% git show --summary CANCEL_test_annotated3
tag CANCEL_test_annotated3
Tagger: Christian Goetze 
Date:   Sat May 25 09:54:59 2013 -0700

Testing a multiline message

body line 1
body line 2
body line 3

tag CANCEL_test_annotated
Tagger: Christian Goetze 
Date:   Sat May 25 09:26:56 2013 -0700

Superceding message

commit b9dc6956eac2c8abb7ed1f6b556a18debfed909b
Author: Christian Goetze 
Date:   Fri May 24 14:35:31 2013 -0700

    FIx some cut&paste errors

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

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

那么,做到这一点的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

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

git cat-file tag <tag-id>

它没有任何&#34;漂亮的印刷&#34;对于人类而言更适合机器解析。

答案 1 :(得分:0)

思路:

git show --color=always,带内ANSI序列似乎不太可能 - 你可以对--color=always--color=never的结果进行区分,这将使消息体单独存在,差异就是全部标题行。

或单独对每个标记执行git cat-file -p