summaryrefslogtreecommitdiff
path: root/src/submodule.c
diff options
context:
space:
mode:
authorRobert Konrad <robert@ktx-software.com>2014-01-02 03:14:03 +0100
committerRobert Konrad <robert@ktx-software.com>2014-01-02 15:10:32 +0100
commit10311979492a4b91b24ebab178588e9af801bc42 (patch)
tree6d602b9cfbc229ad0310c728cd50471cedd66e5b /src/submodule.c
parent6014b7b59ce3320311d61b929e9567c0503b630b (diff)
downloadlibgit2-10311979492a4b91b24ebab178588e9af801bc42.tar.gz
Read the submodule branch option from Git 1.8.2.
Diffstat (limited to 'src/submodule.c')
-rw-r--r--src/submodule.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/submodule.c b/src/submodule.c
index 5548e4553..365fea3c1 100644
--- a/src/submodule.c
+++ b/src/submodule.c
@@ -472,6 +472,10 @@ int git_submodule_save(git_submodule *submodule)
(error = git_config_file_set_string(mods, key.ptr, submodule->url)) < 0)
goto cleanup;
+ if ((error = submodule_config_key_trunc_puts(&key, "branch")) < 0 ||
+ (error = git_config_file_set_string(mods, key.ptr, submodule->branch)) < 0)
+ goto cleanup;
+
if (!(error = submodule_config_key_trunc_puts(&key, "update")) &&
(val = git_submodule_update_to_str(submodule->update)) != NULL)
error = git_config_file_set_string(mods, key.ptr, val);
@@ -528,6 +532,12 @@ const char *git_submodule_url(git_submodule *submodule)
return submodule->url;
}
+const char *git_submodule_branch(git_submodule *submodule)
+{
+ assert(submodule);
+ return submodule->branch;
+}
+
int git_submodule_set_url(git_submodule *submodule, const char *url)
{
assert(submodule && url);
@@ -992,6 +1002,7 @@ static git_submodule *submodule_alloc(git_repository *repo, const char *name)
sm->update = sm->update_default = GIT_SUBMODULE_UPDATE_CHECKOUT;
sm->fetch_recurse = sm->update_default = GIT_SUBMODULE_RECURSE_YES;
sm->repo = repo;
+ sm->branch = NULL;
return sm;
}
@@ -1190,6 +1201,15 @@ static int submodule_load_from_config(
goto done;
}
}
+ else if (strcasecmp(property, "branch") == 0) {
+ git__free(sm->branch);
+ sm->branch = NULL;
+
+ if (value != NULL && (sm->branch = git__strdup(value)) == NULL) {
+ error = -1;
+ goto done;
+ }
+ }
else if (strcasecmp(property, "update") == 0) {
if ((error = git_submodule_parse_update(&sm->update, value)) < 0)
goto done;