summaryrefslogtreecommitdiff
path: root/src/submodule.c
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2014-04-03 11:58:51 -0700
committerRussell Belfer <rb@github.com>2014-04-03 11:58:51 -0700
commiteedeeb9e8f708e9f60568adc4a63307754a603f5 (patch)
treea9315da85a3ca84c4694a3f859ce3cf5f19e6be2 /src/submodule.c
parent18cc7d28c4c5ad4c9ecf7bfeab98a035500fd9d7 (diff)
downloadlibgit2-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.c15
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);
}