bash - 检索包含每个文件的简短提交消息的列表
问题描述
我尝试使用提交短消息(上次更改时的提交)、日期和作者姓名来检索我的存储库中每个文件的列表。它应该看起来像在 github 上:
我已经试过了
for file in */*; do
echo $f $(git log --pretty=format:"%an %s" -- $f)
done
我的存储库的运行时间约为 20 秒。那是减速的方式。该存储库仅包含大约 500 个文件。它也必须适用于 16k 文件的存储库。因此,我只是尝试:
git log --pretty=format:"%an %s" -- */*
这将打印 repo 中的每个提交,经过时间约为 0.5 秒。性能很好,但我找不到在提交中打印更改文件的方法。
我已经阅读了有关格式的信息,但找不到有用的东西。
想法?
我在我的系统上使用 git 2.14。
解决方案
添加原始标志还将显示与每个提交关联的文件。然后,您可以将输出通过管道传输到 awk 以仅列出文件名而不是文件名以及文件模式等
git log --raw --pretty=format:"%an %s" | awk '!/^:/ {print $0 } /^:/ { print $6 }'
要获取与每个文件关联的提交消息,请使用:
git log --raw --pretty=format:"%an %s %f" | awk '!/^:/ {mess=$0 } /^:/ { fils[$6]=mess } END { for ( i in fils ) { print i" - "fils[i]} }'
在这里,我们使用 awk 将提交消息放入由文件名索引的数组中。
推荐阅读
- jenkins - 空手道测试执行
- javascript - 在 aws 上使用 Godaddy SMTP 服务器的 Nodemailer 连接超时错误
- python - 使用 pipenv 安装 pyrebase 失败
- reactjs - 更新状态而不重新渲染 ArcGIS 地图
- javascript - 提取给定日期范围的 JSON 总和?
- python-3.x - Trello API / Python - 无法为卡片设置自定义字段值
- java - 在 Java 中读取巨大的 Json 响应时内存不足
- java - 如何在实时服务器上部署 Spring Boot 应用程序并与 mysql 建立数据库连接
- powershell - gvim 8.2 不会粘贴在 powershell 中的 Windows 10 上
- java - 一个 String 对象加上另一个 String,结果取决于两个 String 对象的参数