@@ -1187,6 +1187,31 @@ struct submodule_parallel_fetch {
1187
1187
};
1188
1188
#define SPF_INIT {0, ARGV_ARRAY_INIT, NULL, NULL, 0, 0, 0, 0}
1189
1189
1190
+ static int get_fetch_recurse_config (const struct submodule * submodule ,
1191
+ struct submodule_parallel_fetch * spf )
1192
+ {
1193
+ if (spf -> command_line_option != RECURSE_SUBMODULES_DEFAULT )
1194
+ return spf -> command_line_option ;
1195
+
1196
+ if (submodule ) {
1197
+ char * key ;
1198
+ const char * value ;
1199
+
1200
+ int fetch_recurse = submodule -> fetch_recurse ;
1201
+ key = xstrfmt ("submodule.%s.fetchRecurseSubmodules" , submodule -> name );
1202
+ if (!repo_config_get_string_const (the_repository , key , & value )) {
1203
+ fetch_recurse = parse_fetch_recurse_submodules_arg (key , value );
1204
+ }
1205
+ free (key );
1206
+
1207
+ if (fetch_recurse != RECURSE_SUBMODULES_NONE )
1208
+ /* local config overrules everything except commandline */
1209
+ return fetch_recurse ;
1210
+ }
1211
+
1212
+ return spf -> default_option ;
1213
+ }
1214
+
1190
1215
static int get_next_submodule (struct child_process * cp ,
1191
1216
struct strbuf * err , void * data , void * * task_cb )
1192
1217
{
@@ -1214,46 +1239,21 @@ static int get_next_submodule(struct child_process *cp,
1214
1239
}
1215
1240
}
1216
1241
1217
- default_argv = "yes" ;
1218
- if (spf -> command_line_option == RECURSE_SUBMODULES_DEFAULT ) {
1219
- int fetch_recurse = RECURSE_SUBMODULES_NONE ;
1220
-
1221
- if (submodule ) {
1222
- char * key ;
1223
- const char * value ;
1224
-
1225
- fetch_recurse = submodule -> fetch_recurse ;
1226
- key = xstrfmt ("submodule.%s.fetchRecurseSubmodules" , submodule -> name );
1227
- if (!repo_config_get_string_const (the_repository , key , & value )) {
1228
- fetch_recurse = parse_fetch_recurse_submodules_arg (key , value );
1229
- }
1230
- free (key );
1231
- }
1232
-
1233
- if (fetch_recurse != RECURSE_SUBMODULES_NONE ) {
1234
- if (fetch_recurse == RECURSE_SUBMODULES_OFF )
1235
- continue ;
1236
- if (fetch_recurse == RECURSE_SUBMODULES_ON_DEMAND ) {
1237
- if (!unsorted_string_list_lookup (& changed_submodule_names ,
1238
- submodule -> name ))
1239
- continue ;
1240
- default_argv = "on-demand" ;
1241
- }
1242
- } else {
1243
- if (spf -> default_option == RECURSE_SUBMODULES_OFF )
1244
- continue ;
1245
- if (spf -> default_option == RECURSE_SUBMODULES_ON_DEMAND ) {
1246
- if (!unsorted_string_list_lookup (& changed_submodule_names ,
1247
- submodule -> name ))
1248
- continue ;
1249
- default_argv = "on-demand" ;
1250
- }
1251
- }
1252
- } else if (spf -> command_line_option == RECURSE_SUBMODULES_ON_DEMAND ) {
1253
- if (!unsorted_string_list_lookup (& changed_submodule_names ,
1242
+ switch (get_fetch_recurse_config (submodule , spf ))
1243
+ {
1244
+ default :
1245
+ case RECURSE_SUBMODULES_DEFAULT :
1246
+ case RECURSE_SUBMODULES_ON_DEMAND :
1247
+ if (!submodule || !unsorted_string_list_lookup (& changed_submodule_names ,
1254
1248
submodule -> name ))
1255
1249
continue ;
1256
1250
default_argv = "on-demand" ;
1251
+ break ;
1252
+ case RECURSE_SUBMODULES_ON :
1253
+ default_argv = "yes" ;
1254
+ break ;
1255
+ case RECURSE_SUBMODULES_OFF :
1256
+ continue ;
1257
1257
}
1258
1258
1259
1259
strbuf_addf (& submodule_path , "%s/%s" , spf -> work_tree , ce -> name );
0 commit comments