summaryrefslogtreecommitdiff
path: root/submodule.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-07-13 23:14:54 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-07-13 23:14:54 (GMT)
commitc9c63ee558ce3399bd2016388da9676d4f5ecf55 (patch)
tree6a799522833b916186424ff760e99818f3fe722c /submodule.c
parent91f69225443b3be8d3f11c5c71795169d7d00737 (diff)
parente8906a9019799c0761ab5447b67582ffd9bae558 (diff)
downloadgit-c9c63ee558ce3399bd2016388da9676d4f5ecf55.zip
git-c9c63ee558ce3399bd2016388da9676d4f5ecf55.tar.gz
git-c9c63ee558ce3399bd2016388da9676d4f5ecf55.tar.bz2
Merge branch 'sb/pull-rebase-submodule'
"git pull --rebase --recurse-submodules" learns to rebase the branch in the submodules to an updated base. * sb/pull-rebase-submodule: builtin/fetch cleanup: always set default value for submodule recursing pull: optionally rebase submodules (remote submodule changes only) builtin/fetch: parse recurse-submodules-default at default options parsing builtin/fetch: factor submodule recurse parsing out to submodule config
Diffstat (limited to 'submodule.c')
-rw-r--r--submodule.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/submodule.c b/submodule.c
index da2b484..6531c5d 100644
--- a/submodule.c
+++ b/submodule.c
@@ -1138,6 +1138,32 @@ static void calculate_changed_submodule_paths(void)
initialized_fetch_ref_tips = 0;
}
+int submodule_touches_in_range(struct object_id *excl_oid,
+ struct object_id *incl_oid)
+{
+ struct string_list subs = STRING_LIST_INIT_DUP;
+ struct argv_array args = ARGV_ARRAY_INIT;
+ int ret;
+
+ gitmodules_config();
+ /* No need to check if there are no submodules configured */
+ if (!submodule_from_path(NULL, NULL))
+ return 0;
+
+ argv_array_push(&args, "--"); /* args[0] program name */
+ argv_array_push(&args, oid_to_hex(incl_oid));
+ argv_array_push(&args, "--not");
+ argv_array_push(&args, oid_to_hex(excl_oid));
+
+ collect_changed_submodules(&subs, &args);
+ ret = subs.nr;
+
+ argv_array_clear(&args);
+
+ free_submodules_oids(&subs);
+ return ret;
+}
+
struct submodule_parallel_fetch {
int count;
struct argv_array args;