How do I create a branch with libgit2
branch, libgit2
Solution
what i should pass as 'target' in this instance.
The resolved commit that you'd like your new branch to point to.
As stated in the header
@param target Object to which this branch should point. This object must belong to the given `repo` and can either be a git_commit or a git_tag. When a git_tag is being passed, it should be dereferencable to a git_commit which oid will be used as the target of the branch.
Note: Surprisingly, the header is not in sync with the code. The header makes the reader think that passing a `git_object` would be fine. However, only a `git_commit` is accepted.
Update
And how would i get 'the resolved commit';
- Provided you know the oid of the commit, `git_commit_lookup()` would be the way to go.
- If you're already having a hold on a `git_object` which happens to be a commit (`git_object_type()` returns `GIT_OBJ_COMMIT`), you could just cast it and pass `(git_commit *)my_object` to the function.
Problem
How do I create a branch using the libgit2 library, the API has reference to a commit target, but what should I use for this parameter? This is the code I have got so far, based on example code in tests, but they use many hard coded references so its difficult to discover what you should use in a real-world scenario like what i should pass as 'target' in this instance. ``` 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 ); ```