如何在 JGit 中执行 git log --no-walk --tags
How to do git log --no-walk --tags in JGit
我想使用 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 return 所有标签,然后解析每个标签的提交。
RefDatabase
可以查询到return所有标签:
Map<String, Ref> allTags repository.getRefDatabase().getRefs("refs/tags/");
然后使用RevWalk
解析每个标签ref:
for (Ref tagRef : allTags.values()) {
try (RevWalk walk = new RevWalk(repository)) {
RevCommit commit = walk.parseCommit(tagRef.getObjectId();
// ...
}
}
我想使用 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 return 所有标签,然后解析每个标签的提交。
RefDatabase
可以查询到return所有标签:
Map<String, Ref> allTags repository.getRefDatabase().getRefs("refs/tags/");
然后使用RevWalk
解析每个标签ref:
for (Ref tagRef : allTags.values()) {
try (RevWalk walk = new RevWalk(repository)) {
RevCommit commit = walk.parseCommit(tagRef.getObjectId();
// ...
}
}