summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2012-07-19 15:39:16 +0200
committernulltoken <emeric.fermas@gmail.com>2012-07-24 16:09:43 +0200
commitb308c11e4ee7d05df4906e04b4008615f41e069c (patch)
tree405f8438f67330755541c935c52f4f0fd3014951 /src
parent326ca710a04cc43d3d5abba6ceb0452c126b7d1a (diff)
downloadlibgit2-b308c11e4ee7d05df4906e04b4008615f41e069c.tar.gz
branch: change git_branch_create() to make it return a reference
Diffstat (limited to 'src')
-rw-r--r--src/branch.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/branch.c b/src/branch.c
index a59577d67..789f52bb6 100644
--- a/src/branch.c
+++ b/src/branch.c
@@ -49,8 +49,7 @@ static int create_error_invalid(const char *msg)
}
int git_branch_create(
- git_oid *oid_out,
- git_repository *repo,
+ git_reference **ref_out,
const char *branch_name,
const git_object *target,
int force)
@@ -61,10 +60,7 @@ int git_branch_create(
git_buf canonical_branch_name = GIT_BUF_INIT;
int error = -1;
- assert(repo && branch_name && target && oid_out);
-
- if (git_object_owner(target) != repo)
- return create_error_invalid("The given target does not belong to this repository");
+ assert(branch_name && target && ref_out);
target_type = git_object_type(target);
@@ -91,17 +87,17 @@ int git_branch_create(
if (git_buf_joinpath(&canonical_branch_name, GIT_REFS_HEADS_DIR, branch_name) < 0)
goto cleanup;
- if (git_reference_create_oid(&branch, repo, git_buf_cstr(&canonical_branch_name), git_object_id(commit), force) < 0)
+ if (git_reference_create_oid(&branch, git_object_owner(commit),
+ git_buf_cstr(&canonical_branch_name), git_object_id(commit), force) < 0)
goto cleanup;
- git_oid_cpy(oid_out, git_reference_oid(branch));
+ *ref_out = branch;
error = 0;
cleanup:
if (target_type == GIT_OBJ_TAG)
git_object_free(commit);
- git_reference_free(branch);
git_buf_free(&canonical_branch_name);
return error;
}