2

有没有办法使用 jgit 获取 git 存储库中每个注释的注释内容。我尝试了几种方法,但似乎都不起作用。

下面的方法,没有列出注释内容,也没有列出提交 ID。

    FileRepository repo;
    try {
        repo = new FileRepository("C:\\example\\repos");
        RevWalk walk = new RevWalk(repo);
        NoteMap map = NoteMap.newEmptyMap();
        Ref ref = repo.getRef("refs/notes/commits");

        if (ref != null) {
            RevCommit notesCommit = walk.parseCommit(ref.getObjectId());
            map = NoteMap.read(walk.getObjectReader(), notesCommit);
            map.getNote(notesCommit.getId());
            Iterator<Note> it = map.iterator();

            while (it.hasNext()) {

                System.out.println(it.next());
            }

请告诉我?

4

2 回答 2

2

jgit 提供了一个ListNotes命令,它可以提供存储库中的特定或所有注释。然后您可以从那里阅读非内容。

您可以在 Snippet ListNotes.java的jgit-cookbook中看到如何使用它的示例。

然后可以通过正常的 Blob 读取来获取实际数据,因为注释被存储为像文件内容一样的正常 Blob,即

ObjectLoader loader = repository.open(note.getData());
loader.copyTo(System.out);
于 2013-09-15T18:46:28.587 回答
0

如果您想以字符串形式获取注释内容而不将其打印到标准输出(控制台)上,您可以使用以下代码行。

ObjectLoader loader = repository.open(note.getData());
byte[] bytes = loader.getBytes();
String s = new String(bytes);
于 2017-06-30T22:05:25.577 回答