summaryrefslogtreecommitdiff
path: root/src/refs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/refs.c')
-rw-r--r--src/refs.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/refs.c b/src/refs.c
index f45c64246..90340d09c 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -116,7 +116,15 @@ void git_reference_free(git_reference *reference)
int git_reference_delete(git_reference *ref)
{
- return git_refdb_delete(ref->db, ref->name, NULL, NULL);
+ const git_oid *old_id = NULL;
+ const char *old_target = NULL;
+
+ if (ref->type == GIT_REF_OID)
+ old_id = &ref->target.oid;
+ else
+ old_target = ref->target.symbolic;
+
+ return git_refdb_delete(ref->db, ref->name, old_id, old_target);
}
int git_reference_lookup(git_reference **ref_out,