List last commit dates for a large number of files, quickly

后端 未结 4 2017
攒了一身酷
攒了一身酷 2021-01-04 03:10

I would like to list the last commit date for a large number of files in a git repository.

For the sake of concreteness, let us assume that I want t

4条回答
  •  一向
    一向 (楼主)
    2021-01-04 03:39

    Here is a Powershell function

    function Get-GitRevisionDates($Path='.', $Ext='.md')
    {
        [array] $log = git --no-pager log --format=format:%ai --name-only $Path
    
        $date_re = "^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d .\d{4}$"
        [array] $dates = $log | Select-String $date_re | select LineNumber, Line
    
        $files = $log -notmatch "^$date_re$" | ? { $_.EndsWith($Ext) } | sort -unique
    
        $res = @()
        foreach ($file in $files) {
            $iFile = $log.IndexOf($file) + 1
            $fDate = $dates | ? LineNumber -lt $iFile | select -Last 1
            $res += [PSCustomObject]@{ File = $file; Date = $fDate.Line }
        }
    
        $res | sort Date -Desc
    }
    

提交回复
热议问题