JGit - Использование параметров с LogCommand

Я использую JGit для предоставления сервиса, который будет предоставлять информацию о различных удаленных репозиториях. Я пытаюсь использовать JGit's LogCommand чтобы сделать это, однако я не смог найти способ сделать это.

Я пытаюсь добиться чего-то похожего на следующее:

git log --author="<username>" --pretty=tformat: --shortstat

Однако я не могу найти какую-либо функциональность, которая делает это. Есть ли способ, которым я мог бы сделать это, с JGit или без?

1 ответ

Решение

По сравнению с родным Git's log команда, LogCommand если JGit предлагает только основные варианты. Но есть RevWalk в JGit, что позволяет указывать пользовательские фильтры при переборе коммитов.

Например:

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();

Пример RevFilter это включает только коммиты 'author' могут выглядеть так:

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,

Другие вопросы по тегам