gpt4 book ai didi

JGit 抛出 MissingObjectException 并说缺少未知的提交 ID

转载 作者:行者123 更新时间:2023-12-05 04:48:26 27 4
gpt4 key购买 nike

我正在使用 JGit 提取两个提交之间的差异,但我经常遇到 JGit 抛出 MissingObjectException 并说缺少未知提交 ID 的问题,如下所示:

org.eclipse.jgit.errors.MissingObjectException: Missing unknown 9eae334e9492f55a841e6eb7ab302ff11d03ab21
at org.eclipse.jgit.internal.storage.file.WindowCursor.open(WindowCursor.java:168)
at org.eclipse.jgit.lib.ObjectReader.open(ObjectReader.java:236)
at org.eclipse.jgit.revwalk.RevWalk.parseAny(RevWalk.java:890)
at org.eclipse.jgit.revwalk.RevWalk.parseCommit(RevWalk.java:800)
at collect.CollectTestcase.autoExtraction(CollectTestcase.java:99)*

运行代码时经常出现这种情况

RevWalk walk = new RevWalk(repo);
walk.parseCommit(commitId)

有人知道它出了什么问题吗?

最佳答案

如果存储库中没有具有给定 ID 的对象,JGit 将抛出一个 MissingObjectException

git 中有不同类型的对象,常见的有提交、blob 和树。

RevWalk 提供 API 来搜索特定类型,例如 parseCommit,以及使用 parseAny 的任何类型的对象。您正在搜索提交的信息在途中丢失,导致错误消息中出现令人困惑的“未知”。它实际上应该显示为“缺少提交 abc...”。

但是尽管有令人不快的消息,但这意味着没有这样的提交。您正在传递不同类型的对象的 ID,例如树对象,或者根本没有这样的对象。您可以使用 parseAny 查看是否存在具有给定 ID 的对象。如果可以找到一个对象,使用返回的 RevObjectgetType 来找出它是哪种类型。

关于JGit 抛出 MissingObjectException 并说缺少未知的提交 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68097863/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com