这个问题是这个问题的反面:JGit how do i get the SHA1 from a RevCommit?

如果给我特定提交的SHA1 ID作为字符串,那么如何在JGit中获取ObjectId或关联的RevCommit

这是一个可能的答案,它遍历所有RevCommit:

RevCommit findCommit(String SHAId)
{
    Iterable<RevCommit> commits = git_.log().call();
    for (RevCommit commit: commits)
    {
        if (commit.getName().equals(SHAId))
            return commit;
    }
    return null;
}

有什么比上面的实现更好的了吗?

最佳答案

首先将字符串转换为ObjectId,然后让RevWalk查找它可能会更容易。

ObjectId commitId = ObjectId.fromString("ab434...");
try (RevWalk revWalk = new RevWalk(repository)) {
  RevCommit commit = revWalk.parseCommit(commitId);
}

关于sha1 - 如何使用JGit从SHA1 ID字符串获取RevCommit或ObjectId?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25755475/

10-15 17:20