summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArthur Schreiber <arthurschreiber@github.com>2016-04-22 10:34:17 -0700
committerArthur Schreiber <arthurschreiber@github.com>2016-04-22 10:34:17 -0700
commit908f24fd13085d06a99666a3b6b1c54f6d4392af (patch)
treec017202d1897c3392e754be9f3f3e819a7cf1527 /src
parent1dc449105b329ea4f8ea9982bc2da869d231c04a (diff)
downloadlibgit2-908f24fd13085d06a99666a3b6b1c54f6d4392af.tar.gz
Allow creating copies of `git_reference` objects.
Diffstat (limited to 'src')
-rw-r--r--src/refs.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/refs.c b/src/refs.c
index 26c80021f..bff443ac9 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -105,6 +105,18 @@ git_reference *git_reference__set_name(
return rewrite;
}
+int git_reference_dup(git_reference **dest, git_reference *source)
+{
+ if (source->type == GIT_REF_SYMBOLIC)
+ *dest = git_reference__alloc_symbolic(source->name, source->target.symbolic);
+ else
+ *dest = git_reference__alloc(source->name, &source->target.oid, &source->peel);
+
+ GITERR_CHECK_ALLOC(*dest);
+
+ return 0;
+}
+
void git_reference_free(git_reference *reference)
{
if (reference == NULL)
@@ -448,7 +460,7 @@ int git_reference_create_matching(
{
int error;
git_signature *who = NULL;
-
+
assert(id);
if ((error = git_reference__log_signature(&who, repo)) < 0)