- hash: 0d54a08ec260f3d554db334092068680cdaff26a
author_date: 1972-11-21T14:35:16-05:00
committer_date: 1972-11-21T14:35:16-05:00
author: |-2
Ken Thompson <ken@research.uucp>
committer: |-2
Ken Thompson <ken@research.uucp>
message: |-2
Research V2 development
Work on file cmd/df.s
Co-Authored-By: Dennis Ritchie <dmr@research.uucp>
Synthesized-from: v2
- hash: 4bc99f57d668fda3158d955c972b09c89c3725bd
author_date: 1972-07-22T17:42:11-05:00
committer_date: 1972-07-22T17:42:11-05:00
author: |-2
Dennis Ritchie <dmr@research.uucp>
committer: |-2
Dennis Ritchie <dmr@research.uucp>
message: |-2
Research V2 development
Work on file c/nc0/c00.c
Synthesized-from: v2
6条答案
按热度按时间63lcw9qa1#
输出到文件:
要指定格式,例如希望所有内容都在一行上
或者你希望它是一种可以通过sendmail这样的程序发送的格式
要生成JSON、YAML或XML,您似乎需要执行以下操作:
以下要点(不是我的)完美地格式化了JSON中的输出:https://gist.github.com/1306223
另见:
dgenwo3n2#
我做了一些类似的事情来创建一个最小的web API / javascript小部件,它可以显示任何存储库中最近的5次提交。
如果您使用任何一种脚本语言来执行此操作,那么您“真的”希望使用
"
以外的字符来生成JSON,以便可以在提交消息中转义真正的引号。(您“迟早”会遇到引号,这样做会破坏一些东西。)所以我最终得到了可怕但不太可能的分隔符
^@^
和这个命令行。然后(在node.js中)我的http响应主体从
stdout
到git log
的调用构建,这样:结果是没有引号的漂亮JSON。
5n0oy7gb3#
这个脚本 Package git log并产生JSON输出:https://github.com/paulrademacher/gitjson
wixjitnu4#
我在Powershell中编写这个代码来获取git logdata并将其保存为json或其他格式:
标题名称:
"提交","树","父级","引用","主题","正文","作者","提交者"
必须与数据字段同步:
参见prettyformat docs。
我选择烟斗**|* * 作为分隔符。我正在采取一个risc,它不是用在提交消息中。我用分号**;* * 作为每个提交的分隔符。当然我应该选择其他的。你可以尝试编写一些聪明的正则表达式来匹配和检查提交消息中是否使用了分隔符。或者你可以编写更复杂的正则表达式来匹配分割点,或者编写一个powershell脚本块来定义分割。
代码中最难理解的一行是。
漂亮的GitLogDump。将(";",';')-拆分";",0,"多行"
您必须设置选项multiline,因为消息中可能存在CR/LF,然后拆分停止-只有在给定拆分次数时才能设置multiline。因此,第二个参数值为0,表示全部。
无论如何,我认为这对于Windows用户或powershell粉丝来说可能是一个可行的解决方案,他们希望从git中获得日志来查看是谁提交的以及为什么提交。
ttvkxqim5#
请看https://github.com/dreamyguy/gitlogg,您需要的最后一个
git-log => JSON
解析器!Gitlogg的一些特性包括:
git log
解析为一个JSON
文件。repository
**键/值。files changed
、insertions
和deletions
**键/值。impact
**键/值,表示提交的累积更改(insertions
-deletions
)。subject
)上的双引号"
转换为单引号'
来净化双引号"
。pretty=format:
占位符都可用。JSON
的键/值。x1c 0d1x成功,解析并保存JSON。
错误001:存储库路径不存在。
错误002:存储库路径存在,但为空。
7fyelxc56#
git log没有提供转义引号,反斜杠,换行符等,这使得 * 健壮的 * 直接JSON输出不可能(除非你限制自己使用可预测内容的字段子集,例如hash & dates)。
但是,
%w(
[width[,
indent1[,
indent2]]])
说明符可以缩进行,从而可以对任意字段发出健壮的YAML!参数与git shortlog -w
相同:按宽度换行输出。每个条目的第一行缩进 * indent1 * 个空格,第二行和后续行缩进 * indent2 * 个空格。
如果 * width * 为0(零),则缩进输出行而不换行。
保证缩进文本(不需要其他引号!)的可预测解析的YAML语法是YAML block literal,不折叠,有明确的空格数要去除,例如
|-2
。-
选项去掉了尾随换行符,这在技术上是有损耗的--它失去了1和4个尾随换行符之间的区别,这是可以用git commit --cleanup=verbatim
生成的--所以理论上你可能需要|+2
来处理多行字段。示例:
%w
会影响后面的%占位符以及文字行,因此必须使用%w(0,0,0)
重置缩进,否则类似committer:
的文本也会缩进。输出片段(在reconstructed unix history上):
注我没有在日期周围加上引号,以显示解析为原生YAML时间戳类型。支持可能会有所不同(特别是因为YAML v1. 2规范将时间戳和布尔值之类的东西委托给了依赖于应用程序的 * schema *?),因此将它们作为"字符串"可能会很实用...
要将YAML转换为JSON,可以通过yq或类似的工具。
或简短的就地脚本,例如