зеркало из https://github.com/microsoft/git.git
rebase --rebase-merges: a "merge" into a new root is a fast-forward
When a user provides a todo list containing something like reset [new root] merge my-branch let's do the same as if pulling into an orphan branch: simply fast-forward. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
ebddf39396
Коммит
9c85a1c29c
12
sequencer.c
12
sequencer.c
|
@ -2870,6 +2870,18 @@ static int do_merge(struct commit *commit, const char *arg, int arg_len,
|
|||
goto leave_merge;
|
||||
}
|
||||
|
||||
if (opts->have_squash_onto &&
|
||||
!oidcmp(&head_commit->object.oid, &opts->squash_onto)) {
|
||||
/*
|
||||
* When the user tells us to "merge" something into a
|
||||
* "[new root]", let's simply fast-forward to the merge head.
|
||||
*/
|
||||
rollback_lock_file(&lock);
|
||||
ret = fast_forward_to(&merge_commit->object.oid,
|
||||
&head_commit->object.oid, 0, opts);
|
||||
goto leave_merge;
|
||||
}
|
||||
|
||||
if (commit) {
|
||||
const char *message = get_commit_buffer(commit, NULL);
|
||||
const char *body;
|
||||
|
|
|
@ -275,4 +275,17 @@ test_expect_success 'root commits' '
|
|||
test_cmp_rev HEAD $before
|
||||
'
|
||||
|
||||
test_expect_success 'a "merge" into a root commit is a fast-forward' '
|
||||
head=$(git rev-parse HEAD) &&
|
||||
cat >script-from-scratch <<-EOF &&
|
||||
reset [new root]
|
||||
merge $head
|
||||
EOF
|
||||
test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
|
||||
test_tick &&
|
||||
git rebase -i -r HEAD^ &&
|
||||
test_cmp_rev HEAD $head
|
||||
'
|
||||
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче