如何在JGit中编写git log --stat命令
我有以下git命令:
git log --stat=1000 --all > gitstat.log
有可能在JGit中实现吗?
如果是,那么用JGit编写的等效方法是什么?
回答:
要访问存储库的历史记录,JGit提供了RevWalk
。它的markStart()
方法用于指定历史记录应从哪个提交开始。存储库中的所有引用都可以通过获取Repository::getAllRefs()
。
一旦一个RevWalk
实例设置,使用它的迭代器或它的next()
方法来遍历的历史。
放在一起看起来像这样:
try (RevWalk revWalk = new RevWalk(repository)) { for (Ref ref : repository.getAllRefs().values()) {
revWalk.markStart(revWalk.parseCommit(ref.getObjectId()));
}
for (RevCommit commit : revWalk) {
// print commit metadata and diff
}
}
请注意,RevWalk
调用的实例parseCommit()
必须与调用的实例相同markStart()
。否则,RevWalk
将会产生有趣的结果。
提交(并由此访问其父项)后,您可以使用DiffFormatter
来获取Diff
s和Edit
s
的列表,这些列表可以告诉您更改了多少个文件和每个文件行。
您可能需要看一下这篇文章才能开始:如何使用JGit显示两次提交之间的更改
这里是一篇文章,深入介绍了JGit的diff API:http://www.codeaffine.com/2016/06/16/jgit-
diff/
以上是 如何在JGit中编写git log --stat命令 的全部内容, 来源链接: utcz.com/qa/420232.html