当前位置: 首页 > 知识库问答 >
问题:

如何使用JGit从SHA1 ID字符串中获取RevCommit或ObjectId?

应志用
2023-03-14

这个问题与这个问题相反:JGit如何从RevCommit中获取SHA1?。

如果我以字符串形式获得特定提交的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;
}

还有比上面这个实现更好的吗?

共有2个答案

湛光明
2023-03-14

请注意,RevWalk 现在是自动关闭的,因此您还可以使用 try-with-resources 语句:

try (RevWalk revWalk = new RevWalk(repository)) {
    RevCommit commit = revWalk.parseCommit(commitId);
}
丁鸿云
2023-03-14

首先将字符串转换成< code>ObjectId然后让< code>RevWalk查找它可能更容易。

ObjectId commitId = ObjectId.fromString("ab434...");
try (RevWalk revWalk = new RevWalk(repository)) {
  RevCommit commit = revWalk.parseCommit(commitId);
}
 类似资料:
  • 问题内容: 这个问题与这个问题相反:JGit如何从RevCommit获得SHA1?。 如果给我特定提交的SHA1 ID作为字符串,如何在JGit中获取ObjectId或关联RevCommit? 这是一个可能的答案,它遍历所有RevCommits: 有什么比上面的实现更好的了吗? 问题答案: 首先将字符串转换为an ObjectId,然后再RevWalk查找它可能会更容易。

  • 这似乎是一个愚蠢的问题,但我在任何地方都找不到关于它的文档。 如何获取RevCommit对象的SHA1?

  • 本文向大家介绍VBA 使用Mid或Mid $从字符串中获取特定字符,包括了VBA 使用Mid或Mid $从字符串中获取特定字符的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我有两根绳子 在两种情况下,我应该删除

  • 我正在做一个项目,在那里用户可以写其他用户的邮件。邮件类当前如下所示: 现在,问题是,我需要将所有邮件保存到. yml用户数据文件中。对我来说,最简单的方法是首先将每封邮件转换为字符串,然后将所有邮件保存到

  • 问题内容: 我有字符串: 如何找到这些字符串中的数字? 也许与功能: 例如: 最好的方法可能是正则表达式,但是如何在示例中使用它呢?也许没有正则表达式? 问题答案: 您可以为此使用正则表达式。该 转义序列将匹配的主题字符串中的所有数字。 例如: