summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2013-05-14 16:40:09 +0200
committerCarlos Martín Nieto <cmn@dwim.me>2013-11-23 13:35:53 +0100
commitca84e058505a25b8f789ee1298a83e818b297ecc (patch)
treec1ca409bf858d69063cf7512c2129d706ea52c78 /src
parent14ab0e100e9474c5d1fda37fb0f4eec9ee0e9d13 (diff)
downloadlibgit2-ca84e058505a25b8f789ee1298a83e818b297ecc.tar.gz
refs: Introduce git_reference_symbolic_set_target_with_log()
Diffstat (limited to 'src')
-rw-r--r--src/refs.c37
1 files changed, 32 insertions, 5 deletions
diff --git a/src/refs.c b/src/refs.c
index 75a7e1b95..eff6b3356 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -523,22 +523,49 @@ int git_reference_set_target_with_log(
out, ref->db->repo, ref->name, id, 1, signature, log_message);
}
+static int ensure_is_an_updatable_symbolic_reference(git_reference *ref)
+{
+ if (ref->type == GIT_REF_SYMBOLIC)
+ return 0;
+
+ giterr_set(GITERR_REFERENCE, "Cannot set symbolic target on a direct reference");
+ return -1;
+}
+
int git_reference_symbolic_set_target(
git_reference **out,
git_reference *ref,
const char *target)
{
+ int error;
+
assert(out && ref && target);
- if (ref->type != GIT_REF_SYMBOLIC) {
- giterr_set(GITERR_REFERENCE,
- "Cannot set symbolic target on a direct reference");
- return -1;
- }
+ if ((error = ensure_is_an_updatable_symbolic_reference(ref)) < 0)
+ return error;
return git_reference_symbolic_create(out, ref->db->repo, ref->name, target, 1);
}
+int git_reference_symbolic_set_target_with_log(
+ git_reference **out,
+ git_reference *ref,
+ const char *target,
+ const git_signature *signature,
+ const char *log_message)
+{
+ int error;
+
+ assert(out && ref && target);
+ assert(signature && log_message);
+
+ if ((error = ensure_is_an_updatable_symbolic_reference(ref)) < 0)
+ return error;
+
+ return git_reference_symbolic_create_with_log(
+ out, ref->db->repo, ref->name, target, 1, signature, log_message);
+}
+
int git_reference_rename(
git_reference **out,
git_reference *ref,