1

我有一个装满文件的文件夹,我想获取每个文件的最后一次 git update 的时间戳。

我想让那些参与 Gradle 任务。

我用 GrGit 尝试了以下操作:

def git = org.ajoberstar.grgit.Grgit.open dir:project.rootDir

task showGit() {
    doFirst {
        file( "$project.rootDir/src/main/java/some/folder" ).listFiles().each{ f ->
            git.log( includes:[ 'HEAD' ], paths:[ f.name ] ).each{
                println "$f.name -> Author: $it.author.name - Date: ${it.date.format( 'dd.MM.yyyy HH:mm' )}"
            }
        }
    }
}

但它什么也没打印。

如果我这样省略paths

task showGit() {
    doFirst {
         git.log( includes:[ 'HEAD' ] ).each{
           println "Author: $it.author.name - Date: ${it.date.format( 'dd.MM.yyyy HH:mm' )}"
        }
    }
}

它打印整个目录的所有提交信息。

如何获取每个文件的时间戳?

4

1 回答 1

0

事实证明这相当容易。

如何获取 Git 中一堆文件的最后提交日期的启发?我整理了自己的 GrGit 任务:

def git = org.ajoberstar.grgit.Grgit.open dir:project.rootDir

task lastGitUpdated() {
    doFirst {
        int base = project.rootDir.toURI().toString().size()

        def dates = file( "$project.rootDir/src/main/java/some/dir" ).listFiles().collect{
            git.log( includes:[ 'HEAD' ], paths:[ it.toURI().toString().substring( base ) ], maxCommits:1 )[ 0 ].date
        }
    }
}

它就像一个魅力!

唯一有点令人失望的是,一个目录上的任务大约需要 150 个文件,需要大约 2 分钟才能完成......

于 2021-10-20T15:11:31.980 回答