3

如何使用 libgit2 库创建分支,API 引用了提交目标,但是我应该为这个参数使用什么?

这是我到目前为止得到的代码,基于测试中的示例代码,但它们使用了许多硬编码引用,因此很难发现你应该在现实世界场景中使用什么,比如我应该在这个“目标”中传递什么实例。

git_reference *branch = NULL, *head = NULL;

/* Create the branch */
git_branch_create( &branch, open_repo, "MyNewBranch", target, 0 );

/* Make HEAD point to this branch */
git_reference_symbolic_create( &head, open_repo, "HEAD", git_reference_name( branch ), 1 );
git_reference_free( head );
git_reference_free( branch );
4

1 回答 1

4

在这种情况下,我应该作为“目标”传递什么。

您希望新分支指向的已解决提交。

标题中所述

@param target此分支应指向的对象。该对象必须属于给定的repo,可以是 git_commit 或 git_tag。当传递 git_tag 时,它应该可以取消引用到 git_commit,其中 oid 将用作分支的目标。

注意:令人惊讶的是,标题与代码不同步。标题使读者认为传递 agit_object就可以了。但是,只git_commit接受 a。

更新

我将如何获得“已解决的提交”;

  • 如果您知道提交的 oid,那git_commit_lookup()将是可行的方法。
  • 如果您已经持有一个git_object恰好是提交(git_object_type()返回GIT_OBJ_COMMIT)的 a ,您可以将其强制转换并传递(git_commit *)my_object给函数。
于 2013-04-01T19:35:27.643 回答