如何在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来获取Diffs和Edits

的列表,这些列表可以告诉您更改了多少个文件和每个文件行。

您可能需要看一下这篇文章才能开始:如何使用JGit显示两次提交之间的更改

这里是一篇文章,深入介绍了JGit的diff API:http://www.codeaffine.com/2016/06/16/jgit-

diff/

以上是 如何在JGit中编写git log --stat命令 的全部内容, 来源链接: utcz.com/qa/420232.html

回到顶部