Git:如何列出版本控制下的所有文件及其作者日期?

der*_*iet 8 git

鉴于git repo,我需要生成每个版本控制文件的最后修改日期的字典,作为映射到其文件路径的unix时间戳.就git而言,我需要最后修改日期 - 而不是文件系统.

为了做到这一点,我想让git输出版本控制下的所有文件的列表以及每个文件的作者日期.如果输出的每个行包含时间戳,则输出git ls-filesgit ls-tree -r master将是完美的.

有没有办法从git获取此输出?

更新更多上下文:我有一个当前的实现,它包含一个python脚本,它遍历源代码管理下的每个文件并在每个文件git log上执行一个,但我发现它不能很好地扩展.回购邮件中的文件越多,git log我必须拨打的电话就越多.所以这让我想方设法用更少的调用从git收集这些信息(理想情况下只需1).

jth*_*ill 1

受版本控制的所有文件的列表以及每个文件的作者日期

缩放对于这个来说不是问题:

#!/bin/sh
temp="${TMPDIR:-/tmp}/@@@commit-at@@@$$"
trap "rm '$temp'" 0 1 2 3 15
git log --pretty=format:"%H%x09%at" --topo-order --reverse "$@" >"$temp"
cut -f1 "$temp" \
| git diff-tree -r --root --name-status --stdin \
| awk '
        BEGIN {FS="\t"; OFS="\t"}
        FNR==1{++f}
        f==1  {at[$1]=$2; next}
        NF==1 {commit=$1; next}
        $1=="D"{$1=""; delete last[$0]; next} # comment to also show deleted files
              {did=$1;$1=""; last[$0]=at[commit]"\t"did}
        END   {for (f in last) print last[f]f}
 ' "$temp" - \
| sort -t"`printf '\t'`" -k3
Run Code Online (Sandbox Code Playgroud)