我一直在尝试使用libgit2在一个简单的程序上创建一个新的提交:
这就是我的所作所为:
我有一个存储库,并在路径上添加了一些索引文件:
git_index_add_bypath(my_repo_index, filename);
//Create commit signature
const char *email, *name;
git_config_get_string(&email, cfg, "user.email");
git_config_get_string(&name, cfg, "user.name");
git_signature_now(&signature, name, email);
//get last commit => parent
git_revparse_single(&git_obj, repo, "HEAD");
git_oid *parent_oid = (git_oid *)git_obj;
git_commit_lookup(&parent, repo, parent_oid);
//writing index
git_oid tree_oid;
git_index_write_tree(&tree_oid, my_repo_index);
git_tree *tree;
git_tree_lookup(&tree, repo, &tree_oid);
//Create the commit
git_commit_create_v(
&new_commit_id,
repo,
"HEAD",
signature, //author
signature, //commiter
NULL, /* use default message encoding */
msg,
tree,
1, // qty of parents
parent //parent commit
);
我以为一切都还好, 这些文件正在索引上添加,并且正在HEAD上创建提交,其父级是HEAD上的最新提交。
但提交是空的???
我做了一个git日志并且提交就在那里,但如果我做了一个git show(SHA),我什么也没得到。 BTW在索引上添加的文件在提交后保留在那里。