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
。
我正在使用 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
。