我想列出 Git 存储库中的目录以及每个目录条目的最新提交信息。类似于 GitHub 如何显示目录或 viewvc 如何显示 SVN/CVS 存储库中的目录。
目前我这样做:
获取目录条目git ls-tree master
并从输出中解析目录结构。
然后对于每个目录条目我这样做:git log -n 1 master -- filename
并从中解析提交信息(我指定了一个特殊的格式字符串以使这更容易,但这与我的问题无关)。
很明显,这非常慢,因为我必须为每个文件调用 Git。有没有更快的方法来做到这一点?也许我可以执行一个命令来立即获取我需要的所有数据?
要解析的 Onelinergit whatchanged
输出和打印树用最近的提交 ID 注释:
git whatchanged -r --pretty=oneline | perl -ne 'our %q; if (/^([0-9a-f]{40})/) {$c = $1} if (/:.{38}(.*)/) { $q{$1} = $c unless exists $q{$1} }; END { print map {"$q{$_} $_\n"} (keys %q); }' | sort -k 2
输出示例:
b32f7f65f19e547712388d2b22ea8d5355702ce2 code/unfreezemodule/file.c
b32f7f65f19e547712388d2b22ea8d5355702ce2 code/unfreezemodule/Makefile
b32f7f65f19e547712388d2b22ea8d5355702ce2 code/unfreezemodule/unfreezemodule.c
efeda0a22e4d1d5f3d755fee5b72fa99c0046e38 code/unfreezer/.gitignore
b822361ffbc4548d918df5381ce94c296459598a code/unfreezer/unfreezer.c
18ed76836182eba702e89b929eff2c0ea78ffb3e code/whole/wh
1e111ce4e8c0813b397f34e3634309f7594cb864 code/xbmctest/.gitignore
cb67943c4c18e3461267a34935fc8efaca5e2166 .config/awesome/awesome.lua
d5e2b7c1d24bed1d0b53338f43747dc856c9cfe4 .config/awesome/rc.lua
13ca8dbcd7f1ec684a7eba494442ee743ed577c0 cr
566b54fb72e32947fcbf7d5c58fed78b5abe976d d
392ac1a2456e8a29b2ebb7af9499c3f69d24a559 Desktop/CityInfo.desktop
392ac1a2456e8a29b2ebb7af9499c3f69d24a559 Desktop/.directory
你可以调整git whatchanged
根据需要参数和/或过滤输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)