这个问题与此问题相反:JGit how do i get the SHA1 from a RevCommit?。
如果我将特定提交的SHA1 ID作为字符串给出,我如何在JGit中获取ObjectId
或关联的RevCommit
?
这是一个可能的答案,它遍历所有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;
}
有没有比上面这个实现更好的东西?
答案 0 :(得分:13)
首先将字符串转换为ObjectId
然后让RevWalk
查找它可能更容易。
ObjectId commitId = ObjectId.fromString("ab434...");
try (RevWalk revWalk = new RevWalk(repository)) {
RevCommit commit = revWalk.parseCommit(commitId);
}
答案 1 :(得分:3)
请注意,RevWalk
现在可以自动关闭,因此您也可以使用try-with-resources语句:
try (RevWalk revWalk = new RevWalk(repository)) {
RevCommit commit = revWalk.parseCommit(commitId);
}