Как получить RevCommit или ObjectId из строки идентификатора SHA1 с JGit?
этот вопрос является обратным этому вопросу:JGit как мне получить SHA1 от RevCommit?.
если мне задан идентификатор SHA1 конкретного коммита в виде строки, как я могу получить ObjectId или связанные RevCommit в JGit?
вот возможный ответ, который повторяется через все RevCommits:
RevCommit findCommit(String SHAId)
{
Iterable<RevCommit> commits = git_.log().call();
for (RevCommit commit: commits)
{
if (commit.getName().equals(SHAId))
return commit;
}
return null;
}
есть ли что-нибудь лучше, чем эта реализация выше?
2 ответов
вероятно, проще сначала преобразовать строку в ObjectId и затем RevWalk посмотреть его.
ObjectId commitId = ObjectId.fromString( "ab434..." );
RevWalk revWalk = new RevWalk( repository );
RevCommit commit = revWalk.parseCommit( commitId );
revWalk.close()
обратите внимание, что RevWalk теперь автоматически закрывается, поэтому вы также можете использовать оператор try-with-resources:
try (RevWalk revWalk = new RevWalk(repository)) {
RevCommit commit = revWalk.parseCommit(commitId);
}