没错,历史记录是很多:
⋊> pwd
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
⋊> git hist | wc -l
35933
但是没必要一次全部列出来,如果整个历史,全部输出到终端,屏幕滚半天,有什么意义,眼睛最终只能看到一屏。只关心最近的就好:
⋊> git hist -10
* 3fd7a855a (HEAD -> master, origin/master, origin/HEAD) imagemagick@6: update 6.9.9-11 bottle. [BrewTestBot] 2017-09-05
* e8c11d312 imagemagick@6 6.9.9-11 [ilovezfs] 2017-09-05
* e81f29136 blockhash: update 0.2.1_3 bottle. [BrewTestBot] 2017-09-05
* 117618359 mgba: update 0.5.2_4 bottle. [BrewTestBot] 2017-09-05
* 275cb3c9d imagemagick: update 7.0.7-0 bottle. [BrewTestBot] 2017-09-05
* 7aee6880f zbar: update 0.10_7 bottle. [BrewTestBot] 2017-09-05
* a740e38bb pqiv: update 2.9_2 bottle. [BrewTestBot] 2017-09-05
* 2ad14a63d dmtx-utils: update 0.7.5_2 bottle. [BrewTestBot] 2017-09-05
* dbf495a41 zbar: revision for imagemagick [ilovezfs] 2017-09-05
或者要查找特定的提交:
⋊> git hist | grep mpv | head -10
* 6b43f46bc mpv: add option to enable audio CD playback (#16549) [gtm87x] 2017-08-12
* cd2e72e09 mpv: update 0.26.0_1 bottle. [BrewTestBot] 2017-08-07
* 778edcaf6 mpv: revision for jpeg [ilovezfs] 2017-08-06
* 88924ce1e mpv: update 0.26.0 bottle. [BrewTestBot] 2017-07-18
* 95e4094ac mpv 0.26.0 [Zhiming Wang] 2017-07-18
* 14d8f964a pv: update 1.6.6 bottle. [BrewTestBot] 2017-07-04
* c8a378844 pv 1.6.6 [ilovezfs] 2017-07-04
* 59f4e505c mpv: update 0.25.0 bottle. [BrewTestBot] 2017-04-23
* 63f265e3b mpv 0.25.0 [Zhiming Wang] 2017-04-22
* 1b718ab8c mpv: update 0.24.0_1 bottle. [BrewTestBot] 2017-04-13
其实区区几万条数据消耗不了多少系统资源,例如把输出重定向到 /dev/null
:
⋊> time git hist > /dev/null
0.76 real 0.53 user 0.04 sys
⋊> time git hist | grep mpv > /dev/null
0.84 real 0.58 user 0.06 sys
根本不需要多少时间,真正耗时的是在显示/渲染到屏幕。
GUI 客户端我用的是 Fork.app,列出整个历史,拖滚动条,一点问题都没有,GUI 应该是很容易做到,屏幕之外的内容就只放在内存里,不进行熏染。
我不知道 magit 是怎么设计(我非 magit 用户),或者是这 emacs 本身的问题,无法避免对屏幕之外的内容进行渲染(加亮/着色…等等)。所以这就需要限制输出的 commit 数量啊,上边的 issue 链接已经提到,几年前就有的 feature,为什么不用呢?