解析 Git 日志输出,最好以 XML 格式。

14
我想解析git log的输出。我的当前工具可以通过解析svn log的--xml选项来完成对svn的解析。我似乎无法弄清楚如何将git log输出为xml格式。如果没有xml选项,最好的解析方法是什么?我真的很想避免将其解析为纯文本,寻找"author"和"date"等信息。
谢谢。

您可以输出任何自定义格式,请参见https://dev59.com/1G445IYBdhLWcg3w_PAn - konsolenfreddy
1个回答

13

您可以通过使用格式选项构建自己的简单XML输出。

git log --pretty=format:"<entry><author>%an</author><commit_date>%cd</commit_date><message_body>%b</message_body></entry>"

只需添加您想要的任何字段即可。 (如果您需要正确的 xml 标头等,则需要编写脚本。)

请参阅man git-log中的PRETTY FORMATS部分,该部分列出了您可以访问的字段列表。


17
如果任何字段的原始文本中有伪XML,则实际上这将无法起作用。要对这种方法进行适当支持,需要在git级别了解XML(至少需要转义)。但在大多数情况下,它将正确运行。 - Oblomov
@Oblomov 是的,我刚刚也因为那个问题而遇到了麻烦。最终我将危险的部分用 CDATA 包装起来,并在稍后作为此类解析。看起来效果还可以。感谢你提醒。 - D.C.
3
即使使用CDATA也不完美。我被一种类似假XML生成器所困扰,它将大多数文本传递了下去,而类似于Git日志的东西——是不同的源代码控制系统,但是这个想法相同——它包含了一个实际的XML,其中包含一个实际的CDATA字符串。尝试将其包装在CDATA中会导致它在嵌入的CDATA处终止。考虑到我有一个无法修复的损坏的XML生成器,我只能尽力对付它。但是,如果你要生成XML,真正正确的方法是对所有内容进行编码:例如,使用btoa/atob或base64。 - torek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接