1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2018年11月10日 |
---|
#23 in #bulk
10KB
101 行
git-structured-log
批量提取git数据的工具
动机
在使用git时,从大量提交中提取数据很困难。例如,当自动生成变更日志时,可能需要获取最后100个提交的提交消息、提交哈希和提交作者,并运行一个分析这些数据的脚本。最常用的解决方案是使用类似git log --pretty=format
的东西,然后解析输出
$ git log --pretty=format:"(%h) (%s) (%an)" aaaaaaa..bbbbbbb
(bbbbbbb) (Foo Bar) (John Smith)
(1234567) (Baz Qux) (Jane Doe)
...
然而,这个解决方案有一些问题:如果用户在他们的名字或提交消息中放入特殊字符,如括号,则无法正确解析输出。格式字符串似乎是git的唯一机制,用于批量提交数据提取,但是无法使格式字符串可靠。
此工具旨在通过允许以良好结构化的格式导出大量git数据来提供替代方案。
安装
cargo install git_structured_log
git_structured_log <exclusive start of range>..<inclusive end of range> <comma-separated list of format flags>
该工具将为给定范围内的每个提交输出一个单行JSON对象。对象的关键字将与提供的格式标志相同。
支持大多数来自git pretty-formats的格式标志(有关代码占位符的部分请参阅该部分)。例如,为了输出最后5个提交的提交消息、提交哈希和提交作者姓名,可以使用
$ git_structured_log HEAD~5..HEAD s,h,an
{"an":"Deepti Gandluri","h":"ad3d0ba","s":"[wasm] Add I64 Atomic binary operations for x64"}
{"an":"Sathya Gunasekaran","h":"658af9d","s":"[test262] Roll test262"}
{"an":"Jakob Kummerow","h":"7c79a9f","s":"[bigint] Stage BigInts"}
{"an":"Deepti Gandluri","h":"782f640","s":"Revert \"[parser] Implements proposal-numeric-separator.\""}
{"an":"Taketoshi Aono","h":"517df52","s":"[parser] Implements proposal-numeric-separator."}
目标
- 允许从提交来自不受信任用户的存储库中安全地提取数据。
- 在性能上与git本身相当。
- 避免产生任何模糊的输出。
- 优先使用集成(例如,如果集成可以轻松格式化数据,则避免为相同的数据添加多个格式化模式)。
许可证
MIT许可证(有关更多详细信息,请参阅LICENSE.md
文件)
依赖项
~11MB
~273K SLoC