@@ -1137,6 +1137,21 @@ static int default_edit_option(void)
1137
1137
st_stdin .st_mode == st_stdout .st_mode );
1138
1138
}
1139
1139
1140
+ static struct commit_list * collect_parents (int argc , const char * * argv )
1141
+ {
1142
+ int i ;
1143
+ struct commit_list * remoteheads = NULL ;
1144
+ struct commit_list * * remotes = & remoteheads ;
1145
+
1146
+ for (i = 0 ; i < argc ; i ++ ) {
1147
+ struct commit * commit = get_merge_parent (argv [i ]);
1148
+ if (!commit )
1149
+ die (_ ("%s - not something we can merge" ), argv [i ]);
1150
+ remotes = & commit_list_insert (commit , remotes )-> next ;
1151
+ }
1152
+ * remotes = NULL ;
1153
+ return remoteheads ;
1154
+ }
1140
1155
1141
1156
int cmd_merge (int argc , const char * * argv , const char * prefix )
1142
1157
{
@@ -1150,8 +1165,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
1150
1165
int best_cnt = -1 , merge_was_ok = 0 , automerge_was_ok = 0 ;
1151
1166
struct commit_list * common = NULL ;
1152
1167
const char * best_strategy = NULL , * wt_strategy = NULL ;
1153
- struct commit_list * remoteheads = NULL ;
1154
- struct commit_list * * remotes = & remoteheads ;
1168
+ struct commit_list * remoteheads , * p ;
1155
1169
void * branch_to_free ;
1156
1170
1157
1171
if (argc == 2 && !strcmp (argv [1 ], "-h" ))
@@ -1256,6 +1270,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
1256
1270
head_arg = argv [1 ];
1257
1271
argv += 2 ;
1258
1272
argc -= 2 ;
1273
+ remoteheads = collect_parents (argc , argv );
1259
1274
} else if (!head_commit ) {
1260
1275
struct commit * remote_head ;
1261
1276
/*
@@ -1271,7 +1286,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
1271
1286
if (!allow_fast_forward )
1272
1287
die (_ ("Non-fast-forward commit does not make sense into "
1273
1288
"an empty head" ));
1274
- remote_head = get_merge_parent (argv [0 ]);
1289
+ remoteheads = collect_parents (argc , argv );
1290
+ remote_head = remoteheads -> item ;
1275
1291
if (!remote_head )
1276
1292
die (_ ("%s - not something we can merge" ), argv [0 ]);
1277
1293
read_empty (remote_head -> object .sha1 , 0 );
@@ -1289,8 +1305,9 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
1289
1305
* the standard merge summary message to be appended
1290
1306
* to the given message.
1291
1307
*/
1292
- for (i = 0 ; i < argc ; i ++ )
1293
- merge_name (argv [i ], & merge_names );
1308
+ remoteheads = collect_parents (argc , argv );
1309
+ for (p = remoteheads ; p ; p = p -> next )
1310
+ merge_name (merge_remote_util (p -> item )-> name , & merge_names );
1294
1311
1295
1312
if (!have_message || shortlog_len ) {
1296
1313
struct fmt_merge_msg_opts opts ;
@@ -1309,19 +1326,16 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
1309
1326
builtin_merge_options );
1310
1327
1311
1328
strbuf_addstr (& buf , "merge" );
1312
- for (i = 0 ; i < argc ; i ++ )
1313
- strbuf_addf (& buf , " %s" , argv [ i ] );
1329
+ for (p = remoteheads ; p ; p = p -> next )
1330
+ strbuf_addf (& buf , " %s" , merge_remote_util ( p -> item ) -> name );
1314
1331
setenv ("GIT_REFLOG_ACTION" , buf .buf , 0 );
1315
1332
strbuf_reset (& buf );
1316
1333
1317
- for (i = 0 ; i < argc ; i ++ ) {
1318
- struct commit * commit = get_merge_parent (argv [i ]);
1319
- if (!commit )
1320
- die (_ ("%s - not something we can merge" ), argv [i ]);
1321
- remotes = & commit_list_insert (commit , remotes )-> next ;
1334
+ for (p = remoteheads ; p ; p = p -> next ) {
1335
+ struct commit * commit = p -> item ;
1322
1336
strbuf_addf (& buf , "GITHEAD_%s" ,
1323
1337
sha1_to_hex (commit -> object .sha1 ));
1324
- setenv (buf .buf , argv [ i ] , 1 );
1338
+ setenv (buf .buf , merge_remote_util ( commit ) -> name , 1 );
1325
1339
strbuf_reset (& buf );
1326
1340
if (!fast_forward_only &&
1327
1341
merge_remote_util (commit ) &&
0 commit comments