@@ -1173,88 +1173,56 @@ static int prune_remote(const char *remote, int dry_run)
1173
1173
return result ;
1174
1174
}
1175
1175
1176
- static int get_one_remote_for_update ( struct remote * remote , void * priv )
1176
+ static int get_remote_default ( const char * key , const char * value , void * priv )
1177
1177
{
1178
- struct string_list * list = priv ;
1179
- if (!remote -> skip_default_update )
1180
- string_list_append (remote -> name , list );
1181
- return 0 ;
1182
- }
1183
-
1184
- static struct remote_group {
1185
- const char * name ;
1186
- struct string_list * list ;
1187
- } remote_group ;
1188
-
1189
- static int get_remote_group (const char * key , const char * value , void * num_hits )
1190
- {
1191
- if (!prefixcmp (key , "remotes." ) &&
1192
- !strcmp (key + 8 , remote_group .name )) {
1193
- /* split list by white space */
1194
- int space = strcspn (value , " \t\n" );
1195
- while (* value ) {
1196
- if (space > 1 ) {
1197
- string_list_append (xstrndup (value , space ),
1198
- remote_group .list );
1199
- ++ * ((int * )num_hits );
1200
- }
1201
- value += space + (value [space ] != '\0' );
1202
- space = strcspn (value , " \t\n" );
1203
- }
1178
+ if (strcmp (key , "remotes.default" ) == 0 ) {
1179
+ int * found = priv ;
1180
+ * found = 1 ;
1204
1181
}
1205
-
1206
1182
return 0 ;
1207
1183
}
1208
1184
1209
1185
static int update (int argc , const char * * argv )
1210
1186
{
1211
- int i , result = 0 , prune = 0 ;
1212
- struct string_list list = { NULL , 0 , 0 , 0 };
1213
- static const char * default_argv [] = { NULL , "default" , NULL };
1187
+ int i , prune = 0 ;
1214
1188
struct option options [] = {
1215
1189
OPT_GROUP ("update specific options" ),
1216
1190
OPT_BOOLEAN ('p' , "prune" , & prune ,
1217
1191
"prune remotes after fetching" ),
1218
1192
OPT_END ()
1219
1193
};
1194
+ const char * * fetch_argv ;
1195
+ int fetch_argc = 0 ;
1196
+ int default_defined = 0 ;
1197
+
1198
+ fetch_argv = xmalloc (sizeof (char * ) * (argc + 5 ));
1220
1199
1221
1200
argc = parse_options (argc , argv , NULL , options , builtin_remote_usage ,
1222
1201
PARSE_OPT_KEEP_ARGV0 );
1223
- if (argc < 2 ) {
1224
- argc = 2 ;
1225
- argv = default_argv ;
1226
- }
1227
1202
1228
- remote_group .list = & list ;
1229
- for (i = 1 ; i < argc ; i ++ ) {
1230
- int groups_found = 0 ;
1231
- remote_group .name = argv [i ];
1232
- result = git_config (get_remote_group , & groups_found );
1233
- if (!groups_found && (i != 1 || strcmp (argv [1 ], "default" ))) {
1234
- struct remote * remote ;
1235
- if (!remote_is_configured (argv [i ]))
1236
- die ("No such remote or remote group: %s" ,
1237
- argv [i ]);
1238
- remote = remote_get (argv [i ]);
1239
- string_list_append (remote -> name , remote_group .list );
1240
- }
1241
- }
1203
+ fetch_argv [fetch_argc ++ ] = "fetch" ;
1242
1204
1243
- if (!result && !list .nr && argc == 2 && !strcmp (argv [1 ], "default" ))
1244
- result = for_each_remote (get_one_remote_for_update , & list );
1205
+ if (prune )
1206
+ fetch_argv [fetch_argc ++ ] = "--prune" ;
1207
+ if (verbose )
1208
+ fetch_argv [fetch_argc ++ ] = "-v" ;
1209
+ if (argc < 2 ) {
1210
+ fetch_argv [fetch_argc ++ ] = "default" ;
1211
+ } else {
1212
+ fetch_argv [fetch_argc ++ ] = "--multiple" ;
1213
+ for (i = 1 ; i < argc ; i ++ )
1214
+ fetch_argv [fetch_argc ++ ] = argv [i ];
1215
+ }
1245
1216
1246
- for (i = 0 ; i < list .nr ; i ++ ) {
1247
- int err = fetch_remote (list .items [i ].string );
1248
- result |= err ;
1249
- if (!err && prune )
1250
- result |= prune_remote (list .items [i ].string , 0 );
1217
+ if (strcmp (fetch_argv [fetch_argc - 1 ], "default" ) == 0 ) {
1218
+ git_config (get_remote_default , & default_defined );
1219
+ if (!default_defined )
1220
+ fetch_argv [fetch_argc - 1 ] = "--all" ;
1251
1221
}
1252
1222
1253
- /* all names were strdup()ed or strndup()ed */
1254
- list .strdup_strings = 1 ;
1255
- string_list_clear (& list , 0 );
1223
+ fetch_argv [fetch_argc ] = NULL ;
1256
1224
1257
- return result ;
1225
+ return run_command_v_opt ( fetch_argv , RUN_GIT_CMD ) ;
1258
1226
}
1259
1227
1260
1228
static int get_one_entry (struct remote * remote , void * priv )
0 commit comments