14
14
#include "refs.h"
15
15
#include "connect.h"
16
16
17
+ #define OPT_QUIET (1 << 0)
18
+
19
+ typedef void (* each_submodule_fn )(const struct cache_entry * list_item ,
20
+ void * cb_data );
21
+
17
22
static char * get_default_remote (void )
18
23
{
19
24
char * dest = NULL , * ret ;
@@ -349,7 +354,23 @@ static int module_list(int argc, const char **argv, const char *prefix)
349
354
return 0 ;
350
355
}
351
356
352
- static void init_submodule (const char * path , const char * prefix , int quiet )
357
+ static void for_each_listed_submodule (const struct module_list * list ,
358
+ each_submodule_fn fn , void * cb_data )
359
+ {
360
+ int i ;
361
+ for (i = 0 ; i < list -> nr ; i ++ )
362
+ fn (list -> entries [i ], cb_data );
363
+ }
364
+
365
+ struct init_cb {
366
+ const char * prefix ;
367
+ unsigned int flags ;
368
+ };
369
+
370
+ #define INIT_CB_INIT { NULL, 0 }
371
+
372
+ static void init_submodule (const char * path , const char * prefix ,
373
+ unsigned int flags )
353
374
{
354
375
const struct submodule * sub ;
355
376
struct strbuf sb = STRBUF_INIT ;
@@ -411,7 +432,7 @@ static void init_submodule(const char *path, const char *prefix, int quiet)
411
432
if (git_config_set_gently (sb .buf , url ))
412
433
die (_ ("Failed to register url for submodule path '%s'" ),
413
434
displaypath );
414
- if (!quiet )
435
+ if (!( flags & OPT_QUIET ) )
415
436
fprintf (stderr ,
416
437
_ ("Submodule '%s' (%s) registered for path '%s'\n" ),
417
438
sub -> name , url , displaypath );
@@ -438,12 +459,18 @@ static void init_submodule(const char *path, const char *prefix, int quiet)
438
459
free (upd );
439
460
}
440
461
462
+ static void init_submodule_cb (const struct cache_entry * list_item , void * cb_data )
463
+ {
464
+ struct init_cb * info = cb_data ;
465
+ init_submodule (list_item -> name , info -> prefix , info -> flags );
466
+ }
467
+
441
468
static int module_init (int argc , const char * * argv , const char * prefix )
442
469
{
470
+ struct init_cb info = INIT_CB_INIT ;
443
471
struct pathspec pathspec ;
444
472
struct module_list list = MODULE_LIST_INIT ;
445
473
int quiet = 0 ;
446
- int i ;
447
474
448
475
struct option module_init_options [] = {
449
476
OPT__QUIET (& quiet , N_ ("Suppress output for initializing a submodule" )),
@@ -468,8 +495,11 @@ static int module_init(int argc, const char **argv, const char *prefix)
468
495
if (!argc && git_config_get_value_multi ("submodule.active" ))
469
496
module_list_active (& list );
470
497
471
- for (i = 0 ; i < list .nr ; i ++ )
472
- init_submodule (list .entries [i ]-> name , prefix , quiet );
498
+ info .prefix = prefix ;
499
+ if (quiet )
500
+ info .flags |= OPT_QUIET ;
501
+
502
+ for_each_listed_submodule (& list , init_submodule_cb , & info );
473
503
474
504
return 0 ;
475
505
}
0 commit comments