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
,