如何在JGit中执行git log --no-walk --tags

问题描述 投票:0回答:1

我想使用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;
            }
        }
java jgit
1个回答
0
投票

要获取存储库中所有标签的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();
    // ...
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.