diff options
author | Nikolai Vladimirov <nikolay@vladimiroff.com> | 2013-05-06 21:32:20 +0400 |
---|---|---|
committer | Nikolai Vladimirov <nikolay@vladimiroff.com> | 2013-05-06 21:33:11 +0400 |
commit | 3d42e9a31e49547e852459cf372984b896d731dd (patch) | |
tree | ccc0480ff99082aebad3d075f3340a6845aa4584 /tests-clar/refs | |
parent | 3405f78754703948475b4677d03fcdbfb099b6a4 (diff) |
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 'tests-clar/refs')
-rw-r--r-- | tests-clar/refs/branches/upstream.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tests-clar/refs/branches/upstream.c b/tests-clar/refs/branches/upstream.c index 2d0ebd240..648acb44d 100644 --- a/tests-clar/refs/branches/upstream.c +++ b/tests-clar/refs/branches/upstream.c @@ -103,6 +103,7 @@ void test_refs_branches_upstream__set_unset_upstream(void) repository = cl_git_sandbox_init("testrepo.git"); + /* remote */ cl_git_pass(git_reference_lookup(&branch, repository, "refs/heads/test")); cl_git_pass(git_branch_set_upstream(branch, "test/master")); @@ -112,6 +113,17 @@ void test_refs_branches_upstream__set_unset_upstream(void) cl_git_pass(git_config_get_string(&value, config, "branch.test.merge")); cl_assert_equal_s(value, "refs/heads/master"); + /* local */ + cl_git_pass(git_reference_lookup(&branch, repository, "refs/heads/test")); + cl_git_pass(git_branch_set_upstream(branch, "master")); + + cl_git_pass(git_repository_config(&config, repository)); + cl_git_pass(git_config_get_string(&value, config, "branch.test.remote")); + cl_assert_equal_s(value, "."); + cl_git_pass(git_config_get_string(&value, config, "branch.test.merge")); + cl_assert_equal_s(value, "refs/heads/master"); + + /* unset */ cl_git_pass(git_branch_set_upstream(branch, NULL)); cl_git_fail_with(git_config_get_string(&value, config, "branch.test.merge"), GIT_ENOTFOUND); cl_git_fail_with(git_config_get_string(&value, config, "branch.test.remote"), GIT_ENOTFOUND); |