JGit - 在 LogCommand 中使用参数

JGit - Using parameters with LogCommand

我正在使用 JGit 提供一项服务,该服务将提供有关各种远程存储库的信息。我正在尝试使用 JGit 的 LogCommand 来执行此操作,但是我一直无法找到执行此操作的方法。

我正在尝试实现类似于执行以下操作的目标:

git log --author="<username>" --pretty=tformat: --shortstat

但是,我找不到执行此操作的任何功能。有没有 JGit 可以做到这一点?

与原生Git的log命令相比,LogCommand if JGit仅提供基本选项。但是 JGit 中有一个 RevWalk 允许在迭代提交时指定自定义过滤器。

例如:

RevWalk walk = new RevWalk( repo );
walk.markStart( walk.parseCommit( repo.resolve( Constants.HEAD ) ) );
walk.sort( RevSort.REVERSE ); // chronological order
walk.setRevFilter( myFilter );
for( RevCommit commit : walk ) {
  // print commit
}
walk.close();

仅包含 'author' 提交的示例 RevFilter 可能如下所示:

RevFilter filter = new RevFilter() {
  @Override
  public boolean include( RevWalk walker, RevCommit commit )
    throws StopWalkException, IOException
  {
    return commit.getAuthorIdent().getName().equals( "author" );
  }

  @Override
  public RevFilter clone() {
    return this; // may return this, or a copy if filter is not immutable
  }
};

要中止行走,过滤器可能会抛出 StopWalkException