Java JGit中的文件提交日期

Java JGit中的文件提交日期,java,git,jgit,Java,Git,Jgit,是否可以使用JGit解析首次提交某个文件的日期和时间 Git等价物将列出第一次提交,如: git log --format=%aD <FILE> | tail -1 git日志--格式=%aD | tail-1 ARevWalk可按如下方式用于获取包含“file.txt”的第一次提交 RevWalk revWalk = new RevWalk( repository ); revWalk.markStart( revWalk.parseCommit( repository.reso

是否可以使用JGit解析首次提交某个文件的日期和时间

Git等价物将列出第一次提交,如:

git log --format=%aD <FILE> | tail -1
git日志--格式=%aD | tail-1

A
RevWalk
可按如下方式用于获取包含“file.txt”的第一次提交

RevWalk revWalk = new RevWalk( repository );
revWalk.markStart( revWalk.parseCommit( repository.resolve( Constants.HEAD ) ) );
revWalk.setTreeFilter( PathFilter.create( "path/to/file.txt" ) );
revWalk.sort( RevSort.COMMIT_TIME_DESC );
revWalk.sort( RevSort.REVERSE, true );
RevCommit commit = revWalk.next();
...
revWalk.dispose();
在本例中,历史从
头部开始。调整
markStart()
从其他地方调用start,或多次调用
markStart()
以包含多个起点

PathFilter
排除不包含给定存储库相对路径名的提交。最后,两个
sort()
调用会注意按时间戳(最新的第一个)以相反的顺序排列提交。因此,包含给定文件的最早提交由
next()
返回

请注意,传递给
markStart()
的提交必须来自同一个revWalk,即必须通过从同一个revWalk实例调用
parseCommit()
来获得。另请参阅以了解更多详细信息。

似乎“file.txt”还不够,但还必须提到从Repo的根文件夹开始的路径(例如,如果文件位于/src/file.txt,则路径为“src/file.txt”。之后,添加commit.getCommitTime()就成功了。感谢您的回答!当然,完整的(相对存储库)需要指定路径。感谢您指出这一点。我已经澄清了答案。