diff options
author | Russell Belfer <rb@github.com> | 2014-04-03 11:58:51 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2014-04-03 11:58:51 -0700 |
commit | eedeeb9e8f708e9f60568adc4a63307754a603f5 (patch) | |
tree | a9315da85a3ca84c4694a3f859ce3cf5f19e6be2 /src/submodule.c | |
parent | 18cc7d28c4c5ad4c9ecf7bfeab98a035500fd9d7 (diff) | |
download | libgit2-eedeeb9e8f708e9f60568adc4a63307754a603f5.tar.gz |
Test (and fix) the git_submodule_sync changes
I wrote this stuff a while ago and forgot to write tests. Wanted
to do so now to wrap up the PR and immediately found problems.
Diffstat (limited to 'src/submodule.c')
-rw-r--r-- | src/submodule.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/submodule.c b/src/submodule.c index e49f09699..bea096df5 100644 --- a/src/submodule.c +++ b/src/submodule.c @@ -849,12 +849,21 @@ int git_submodule_sync(git_submodule *sm) (sm->flags & GIT_SUBMODULE_STATUS_IN_WD) != 0 && !(error = git_submodule_open(&smrepo, sm))) { - if ((error = lookup_head_remote_key(&key, smrepo)) < 0) { + git_buf remote_name = GIT_BUF_INIT; + + if ((error = git_repository_config__weakptr(&cfg, smrepo)) < 0) + /* return error from reading submodule config */; + else if ((error = lookup_head_remote_key(&remote_name, smrepo)) < 0) { giterr_clear(); - git_buf_sets(&key, "branch.origin.remote"); + error = git_buf_sets(&key, "branch.origin.remote"); + } else { + error = git_buf_join3( + &key, '.', "branch", remote_name.ptr, "remote"); + git_buf_free(&remote_name); } - error = git_config__update_entry(cfg, key.ptr, sm->url, true, true); + if (!error) + error = git_config__update_entry(cfg, key.ptr, sm->url, true, false); git_repository_free(smrepo); } |