我正在尝试从这样的几个存储库中提取git日志:
git log --pretty=format:%H\t%ae\t%an\t%at\t%s --numstat
对于较大的存储库(如rails/rails),需要花费35秒钟以上的时间才能生成日志。
有没有办法改善这种性能?
最佳答案
没错,在56,000次提交上生成报告需要花费20到35秒,这产生了224,000行(15MiB)的输出。我实际上认为这是相当不错的表现,但您却没有;好的。
由于您是从不变的数据库中使用恒定格式生成报告,因此只需执行一次。之后,您可以使用git log
的缓存结果并跳过耗时的生成。例如:
git log --pretty=format:%H\t%ae\t%an\t%at\t%s --numstat > log-pretty.txt
您可能想知道在整个报告中搜索感兴趣的数据需要花费多长时间。这是一个值得提出的问题:
$ tail -1 log-pretty.txt
30 0 railties/test/webrick_dispatcher_test.rb
$ time grep railties/test/webrick_dispatcher_test.rb log-pretty.txt
…
30 0 railties/test/webrick_dispatcher_test.rb
real 0m0.012s
…
不错,引入“缓存”已将所需时间从35秒以上减少到十几毫秒。快了将近3000倍。
关于git - 如何提高git log的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35186829/