C libgit2 - 按提交列出文件

C libgit2 - listing files by commit

我需要通过提交以编程方式列出 Git 中的文件。这是我的代码:

git_libgit2_init();
const char * REPO_PATH = "C:/Users/ki/test_repo";
git_repository * repo;
git_repository_open(&repo, REPO_PATH);

git_oid oid;
git_oid_fromstr(&oid, "08061b05");

git_tree *tree;
git_tree_lookup(&tree, repo, &oid);

size_t cnt = git_tree_entrycount(tree);
printf("tree entries: %d\n", (int) cnt);

...

git_tree_free(tree);

git_repository_free(repo);
git_libgit2_shutdown();
return 0;

问题是,库抛出断言错误,tree.c 第 339 行。有什么提示吗?

git_tree_entrycount() 在收到 NULL 树指针时断言。您应该检查 git_repository_open()git_oid_fromstr()git_tree_lookup() 以获得 return 结果。如果其中任何 return 不是 0,您可以使用 git_error_last().

检查错误消息