jgit:获取git存储库中每个笔记的笔记内容

时间:2013-09-13 11:08:39

标签: git jgit

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

以下方法,doest列出注释内容和提交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());
            }

请告诉我?

2 个答案:

答案 0 :(得分:2)

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

您可以在代码段jgit-cookbookListNotes.java上看到有关如何使用此功能的示例。

然后可以通过普通的Blob读取来获取实际数据,因为注释存储为普通blob,如文件内容,即

ObjectLoader loader = repository.open(note.getData());
loader.copyTo(System.out);

答案 1 :(得分:0)

如果您想将记事内容作为字符串而不在标准输出(控制台)上打印,则可以使用以下代码行。

ObjectLoader loader = repository.open(note.getData());
byte[] bytes = loader.getBytes();
String s = new String(bytes);