是否可以使用JGit解析首次提交某个文件的日期和时间?
相当于Git会列出第一次提交,例如:
git log --format=%aD <FILE> | tail -1
最佳答案
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();
在示例中,历史记录始于
HEAD
。调整markStart()
从其他地方开始调用,或多次调用markStart()
以包括多个起点。PathFilter
排除不包含给定存储库相对路径名的提交。最后,两个sort()
调用要注意,提交按其时间戳记(最新的顺序)以相反的顺序进行排序。因此,包含给定文件的最早提交将由next()
返回。请注意,传递给
markStart()
的提交必须来自同一修订版修订程序,即必须通过从同一revWalk实例调用parseCommit()
获得。有关更多详细信息,另请参见this thread。关于java - JGit中的文件提交日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26917239/