Merge branch 'so/cherry-pick-always-allow-m1'
"git cherry-pick -m1" was forbidden when picking a non-merge commit, even though there _is_ parent number 1 for such a commit. This was done to avoid mistakes back when "cherry-pick" was about picking a single commit, but is no longer useful with "cherry-pick" that can pick a range of commits. Now the "-m$num" option is allowed when picking any commit, as long as $num names an existing parent of the commit. Technically this is a backward incompatible change; hopefully nobody is relying on the error-checking behaviour. * so/cherry-pick-always-allow-m1: t3506: validate '-m 1 -ff' is now accepted for non-merge commits t3502: validate '-m 1' argument is now accepted for non-merge commits cherry-pick: do not error on non-merge commits when '-m 1' is specified t3510: stop using '-m 1' to force failure mid-sequence of cherry-picks
This commit is contained in:
10
sequencer.c
10
sequencer.c
@ -1790,9 +1790,13 @@ static int do_pick_commit(struct repository *r,
|
||||
return error(_("commit %s does not have parent %d"),
|
||||
oid_to_hex(&commit->object.oid), opts->mainline);
|
||||
parent = p->item;
|
||||
} else if (0 < opts->mainline)
|
||||
return error(_("mainline was specified but commit %s is not a merge."),
|
||||
oid_to_hex(&commit->object.oid));
|
||||
} else if (1 < opts->mainline)
|
||||
/*
|
||||
* Non-first parent explicitly specified as mainline for
|
||||
* non-merge commit
|
||||
*/
|
||||
return error(_("commit %s does not have parent %d"),
|
||||
oid_to_hex(&commit->object.oid), opts->mainline);
|
||||
else
|
||||
parent = commit->parents->item;
|
||||
|
||||
|
Reference in New Issue
Block a user