summaryrefslogtreecommitdiff
path: root/src/branch.c
diff options
context:
space:
mode:
authorNikolai Vladimirov <nikolay@vladimiroff.com>2013-05-06 20:32:20 +0300
committerNikolai Vladimirov <nikolay@vladimiroff.com>2013-05-06 20:33:11 +0300
commit3d42e9a31e49547e852459cf372984b896d731dd (patch)
treeccc0480ff99082aebad3d075f3340a6845aa4584 /src/branch.c
parent3405f78754703948475b4677d03fcdbfb099b6a4 (diff)
downloadlibgit2-3d42e9a31e49547e852459cf372984b896d731dd.tar.gz
git_branch_set_upstream with local branches
Currently git_branch_set_upstream when passed a local branch creates invalid configuration, for ex. if we setup branch 'tracking_master' to track local 'master' libgit2 generates the following config ``` [branch "track_master"] remote = . merge = .refs/heads/track_master ``` The merge value is invalid and calling git_branch_upstream on 'tracking_master' results in invalid reference error. It should do: ``` [branch "track_master"] remote = . merge = refs/heads/master ```
Diffstat (limited to 'src/branch.c')
-rw-r--r--src/branch.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/branch.c b/src/branch.c
index ab661f422..830294941 100644
--- a/src/branch.c
+++ b/src/branch.c
@@ -521,7 +521,8 @@ int git_branch_set_upstream(git_reference *branch, const char *upstream_name)
goto on_error;
if (local) {
- if (git_buf_puts(&value, git_reference_name(branch)) < 0)
+ git_buf_clear(&value);
+ if (git_buf_puts(&value, git_reference_name(upstream)) < 0)
goto on_error;
} else {
/* Get the remoe-tracking branch's refname in its repo */