summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlosmn@github.com>2016-04-26 11:02:45 +0200
committerCarlos Martín Nieto <carlosmn@github.com>2016-04-26 11:02:45 +0200
commit9068704bd81de05b892498bd9368a2c82b46e334 (patch)
tree2585a9c3a5c6c758b70df611a1e3f96c50d2388a /src
parentc30955e0c00e6a29ee73b47b39d149a6da495f9f (diff)
parent908f24fd13085d06a99666a3b6b1c54f6d4392af (diff)
downloadlibgit2-9068704bd81de05b892498bd9368a2c82b46e334.tar.gz
Merge pull request #3749 from arthurschreiber/arthur/add-git-reference-dup
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)