我正在尝试制作一个.csv输出文件,其中包含有关存储库历史记录的信息,然后可以使用excel或类似程序从外部进行操作。我当前使用的命令是:
git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --author=x --numstat --sparse --cc --date=local folder > test.csv
是否有任何方法可以将numstat输出输出到单独的列中,至少远离提交哈希码列? 谢谢
答案 0 :(得分:2)
简短的答案令人不满意:不,没有办法做到这一点。
但是,有一个简单的解决方法(如果有点慢的话)。只要Git的现有输出格式不令人满意,您就可以:
用git log
替换git rev-list
(包括其大多数选项),不包括任何面向格式和输出选择的git log
选项,并添加HEAD
如果您未列出任何分支名称。在这种情况下,将产生:
git rev-list --author=x --sparse folder HEAD
读取此命令的输出。它包含您要检查的每个提交的哈希ID。您现在可以运行一个或多个命令,例如:
git log --no-walk --pretty=format:... --cc --numstat <hash>
并阅读它们的输出,将输出转换为您喜欢的格式。 (您可以使用git log -1
而不是git log --no-walk
,但至少我希望使用--no-walk
进行说明。)
一次而不是整体进行一次提交的唯一原因是,在进行整体提交时,试图解析输出并将其重新格式化为所需格式的程序通常无法区分直接从git log
输出,并将文本存储在提交消息正文中,因为后者可以模仿前者。如果您的输出受到了充分的控制(在这种情况下,可能是:%s
文本将全部放在一行上,与%b
或%B
不同,您可以省去单独的{{1 }},但是您仍然需要一个程序来读取输出并将其转换为您喜欢的格式。
一个简单的awk程序可能就足够了,所以:
git rev-list
可能会起作用。编写简单的awk程序对您来说是一种练习,或者是发给awk的问题的补充。 (提示:请考虑在git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --author=x \
--numstat --sparse --cc --date=local folder | awk ... > test.csv
行中添加一个可区分的第一个字符,因为您知道--pretty=format:
会产生一个数字作为每一行的第一个输出字符。)