Как получить RevCommit или ObjectId из строки идентификатора SHA1 с JGit?
этот вопрос является обратным этому вопросу:JGit как мне получить SHA1 от RevCommit?.
если мне задан идентификатор SHA1 конкретного коммита в виде строки, как я могу получить ObjectId
или связанные RevCommit
в JGit?
вот возможный ответ, который повторяется через все RevCommit
s:
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);
}