java - 如何在给定 commit-sha 的情况下使用 JGit 读取 Git 注释

标签 java git jgit git-notes

我正在尝试使用 JGit 从存储库中特定提交的自定义引用 refs/notes/abcd 读取 Git Notes 信息

这是我尝试过的:

Repository repository = repositoryManager.openRepository(repoName);
Git git = new Git(repository);
ObjectId oid = repository.resolve("5740b142a7b5f66768a2d904b267dccaef1a095f");
Note note = git.notesShow().setNotesRef("refs/notes/abcd").setObjectId(oid).call();
ObjectLoader loader = repository.open(note.getData());
byte[] data = loader.getBytes();
System.out.println(new String(data, "utf-8"));

我收到以下编译错误:

error: incompatible types: org.eclipse.jgit.lib.ObjectId cannot be converted to org.eclipse.jgit.revwalk.RevObject

在给定 commit-sha 字符串的情况下,如何将 RevObject 变量传递给 Git setObjectId()

最佳答案

使用 RevWalk,可以解析对象 ID,并将生成的 RevCommit 传递给 ShowNoteCommand

例如:

RevCommit commit;
try( RevWalk revWalk = new RevWalk( repository ) ) {
  commit = revWalk.parseCommit( oid );
}

git.notesShow().setObjectId( commit )...

关于java - 如何在给定 commit-sha 的情况下使用 JGit 读取 Git 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46167451/

相关文章:

java - 无法从 java 连接到本地 mongoDB

java - 无法理解这个初学者 Java ArrayList 问题

git - 如何使用 git 查看所有文件自初始创建以来的更改?

ruby-on-rails - 如何从特定分支更新我的 git 子模块?

java - JDBC未插入int jdbc表

java - Groovy 日期解析——X 是非法模式字符

git 推送登录失败

jgit - 如何使用 JGit 记录两个发布标签之间的提交

java - 在 JGit 中创建孤立分支和 rm -rf

java - 有没有办法测试是否有人使用 JGit 从本地存储库推送到远程存储库?