我想使用JGit中的LogCommand执行所提到的命令。我该如何编写可以完成这项工作的自定义过滤器?我做了类似的事情:
RevFilter revFilter = new RevFilter() {
@Override
public boolean include(RevWalk revWalk, RevCommit revCommit) throws StopWalkException, MissingObjectException, IncorrectObjectTypeException, IOException {
if (revCommit.getParentCount() > 0){// do not traverse parent(s)}
return false;
}
@Override
public RevFilter clone() {
return this;
}
}
要获取存储库中所有标签的HEAD提交,可以使用JGit返回所有标签,然后解析每个标签的提交。
可以查询RefDatabase
以返回所有标签:
Map<String, Ref> allTags repository.getRefDatabase().getRefs("refs/tags/");
然后使用RevWalk
解析每个标记参考:
for (Ref tagRef : allTags.values()) {
try (RevWalk walk = new RevWalk(repository)) {
RevCommit commit = walk.parseCommit(tagRef.getObjectId();
// ...
}
}