mirror of
https://github.com/git/git
synced 2024-08-25 02:35:46 +00:00
Merge branch 'ja/rebase-i-avoid-amending-self'
"git rebase -i" can mistakenly attempt to apply a fixup to a commit itself, which has been corrected. * ja/rebase-i-avoid-amending-self: sequencer: avoid dropping fixup commit that targets self via commit-ish
This commit is contained in:
commit
dc154c39f7
|
@ -6203,8 +6203,6 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
|
||||||
return error(_("the script was already rearranged."));
|
return error(_("the script was already rearranged."));
|
||||||
}
|
}
|
||||||
|
|
||||||
*commit_todo_item_at(&commit_todo, item->commit) = item;
|
|
||||||
|
|
||||||
parse_commit(item->commit);
|
parse_commit(item->commit);
|
||||||
commit_buffer = logmsg_reencode(item->commit, NULL, "UTF-8");
|
commit_buffer = logmsg_reencode(item->commit, NULL, "UTF-8");
|
||||||
find_commit_subject(commit_buffer, &subject);
|
find_commit_subject(commit_buffer, &subject);
|
||||||
|
@ -6271,6 +6269,8 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
|
||||||
strhash(entry->subject));
|
strhash(entry->subject));
|
||||||
hashmap_put(&subject2item, &entry->entry);
|
hashmap_put(&subject2item, &entry->entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*commit_todo_item_at(&commit_todo, item->commit) = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rearranged) {
|
if (rearranged) {
|
||||||
|
|
|
@ -232,6 +232,19 @@ test_expect_success 'auto squash that matches longer sha1' '
|
||||||
test_line_count = 1 actual
|
test_line_count = 1 actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'auto squash of fixup commit that matches branch name which points back to fixup commit' '
|
||||||
|
git reset --hard base &&
|
||||||
|
git commit --allow-empty -m "fixup! self-cycle" &&
|
||||||
|
git branch self-cycle &&
|
||||||
|
GIT_SEQUENCE_EDITOR="cat >tmp" git rebase --autosquash -i HEAD^^ &&
|
||||||
|
sed -ne "/^[^#]/{s/[0-9a-f]\{7,\}/HASH/g;p;}" tmp >actual &&
|
||||||
|
cat <<-EOF >expect &&
|
||||||
|
pick HASH second commit
|
||||||
|
pick HASH fixup! self-cycle # empty
|
||||||
|
EOF
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_auto_commit_flags () {
|
test_auto_commit_flags () {
|
||||||
git reset --hard base &&
|
git reset --hard base &&
|
||||||
echo 1 >file1 &&
|
echo 1 >file1 &&
|
||||||
|
|
Loading…
Reference in a new issue