获取git中目录下文件的最后修改日期



我有一个充满文件的文件夹,我想获得每个文件最近一次git更新的时间戳。

我想把这些放到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' )}"
}
}
}

打印整个dir的所有提交信息。

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

结果很简单。

灵感来自于如何在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分钟才能完成…