diff options
| author | Nikolai Vladimirov <nikolay@vladimiroff.com> | 2013-05-06 20:32:20 +0300 |
|---|---|---|
| committer | Nikolai Vladimirov <nikolay@vladimiroff.com> | 2013-05-06 20:33:11 +0300 |
| commit | 3d42e9a31e49547e852459cf372984b896d731dd (patch) | |
| tree | ccc0480ff99082aebad3d075f3340a6845aa4584 /src/branch.c | |
| parent | 3405f78754703948475b4677d03fcdbfb099b6a4 (diff) | |
| download | libgit2-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.c | 3 |
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 */ |
