如何使用 libgit2 中的 `git_note`?

How to use `git_note` from libgit2?

我有如下代码(commit_id 已设置):

  git_note* note;
  git_note_read(&note, repo, "refs/notes/label", &commit_oid);
  printf("%s\n", note->message);
  git_note_free(note);

它没有编译,抱怨:

.../importer_test.cc:103:22: error: member access into incomplete type 'git_note'
  printf("%s\n", note->message);
                     ^
.../include/git2/types.h:160:16: note: forward declaration of 'git_note'
typedef struct git_note git_note;

如果我只是 copy/paste 从 src/notes.h 到这个文件:

struct git_note {
  git_oid id;
  git_signature *author;
  git_signature *committer;
  char *message;
};

编译和运行正确。但这肯定不是正确的解决方案吗?

git_note 是不透明类型。您无意直接访问数据成员。您应该使用访问器函数来读取它。在您的情况下,您可能希望使用 git_note_message() 来获取消息。