git_commit_create_v创建空提交

时间:2014-02-03 10:15:06

标签: c libgit2

我一直在尝试使用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在索引上添加的文件在提交后保留在那里。

0 个答案:

没有答案