summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/refspec.c2
-rw-r--r--tests-clar/network/remotes.c10
2 files changed, 11 insertions, 1 deletions
diff --git a/src/refspec.c b/src/refspec.c
index 7694be525..48265bcde 100644
--- a/src/refspec.c
+++ b/src/refspec.c
@@ -107,7 +107,7 @@ int git_refspec_transform_r(git_buf *out, const git_refspec *spec, const char *n
return GIT_SUCCESS;
git_buf_truncate(out, out->size - 1); /* remove trailing '*' */
- git_buf_puts(out, name);
+ git_buf_puts(out, name + strlen(spec->src) - 1);
return git_buf_lasterror(out);
}
diff --git a/tests-clar/network/remotes.c b/tests-clar/network/remotes.c
index 2abaccb07..a0a940fc9 100644
--- a/tests-clar/network/remotes.c
+++ b/tests-clar/network/remotes.c
@@ -1,4 +1,6 @@
#include "clar_libgit2.h"
+#include "buffer.h"
+#include "refspec.h"
static git_remote *_remote;
static git_repository *_repo;
@@ -48,3 +50,11 @@ void test_network_remotes__transform(void)
cl_git_pass(git_refspec_transform(ref, sizeof(ref), _refspec, "refs/heads/master"));
cl_assert(!strcmp(ref, "refs/remotes/test/master"));
}
+
+void test_network_remotes__transform_r(void)
+{
+ git_buf buf = GIT_BUF_INIT;
+
+ cl_git_pass(git_refspec_transform_r(&buf, _refspec, "refs/heads/master"));
+ cl_assert(!strcmp(git_buf_cstr(&buf), "refs/remotes/test/master"));
+}