Как сделать git log --no-walk --tags в JGit - PullRequest
0 голосов
/ 06 апреля 2020

Я хотел бы использовать LogCommand из J Git для выполнения упомянутой команды. Как я могу написать собственный фильтр, который может выполнять эту работу? Я сделал что-то вроде:

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;
  }
}

1 Ответ

0 голосов
/ 06 апреля 2020

Чтобы получить фиксацию HEAD всех тегов в репозитории, вы можете использовать J Git, чтобы вернуть все теги, а затем разрешить фиксацию каждого тега.

Можно запросить RefDatabase для возврата все теги:

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();
    // ...
  }
}
...