如何使用libgit2创建分支

时间:2013-04-01 19:19:29

标签: branch libgit2

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

这是我到目前为止所获得的代码,基于测试中的示例代码,但它们使用了许多硬编码引用,因此难以发现在现实场景中应该使用的内容,例如我应该作为'target传递的内容'在这种情况下。

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 );

1 个答案:

答案 0 :(得分:3)

  

在这个例子中我应该作为'目标'传递。

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

header

中所述
  

@param target 此分支应指向的对象。此对象   必须属于给定的repo,并且可以是git_commit或a   git_tag。当git_tag被传递时,它应该是可解除引用的   到git_commit,哪个oid将被用作分支的目标。

注意:令人惊讶的是,标头与代码不同步。标题使读者认为传递git_object会很好。但是,只接受git_commit

更新

  

我将如何得到'已解决的提交';

  • 如果您知道提交的oid,git_commit_lookup()将是您要走的路。
  • 如果您已经暂时搁置git_object恰好是提交(git_object_type()返回GIT_OBJ_COMMIT),您可以直接投放并通过(git_commit *)my_object功能。