mirror of
https://github.com/git/git
synced 2024-10-01 06:05:20 +00:00
Merge branch 'ah/sequencer-rewrite-todo-fix'
When the user edits "rebase -i" todo file so that it starts with a "fixup", which would make it invalid, the command truncated the rest of the file before giving an error and returning the control back to the user. Stop truncating to make it easier to correct such a malformed todo file. * ah/sequencer-rewrite-todo-fix: sequencer: finish parsing the todo list despite an invalid first line
This commit is contained in:
commit
8bfb359844
|
@ -2702,7 +2702,7 @@ int todo_list_parse_insn_buffer(struct repository *r, char *buf,
|
|||
if (fixup_okay)
|
||||
; /* do nothing */
|
||||
else if (is_fixup(item->command))
|
||||
return error(_("cannot '%s' without a previous commit"),
|
||||
res = error(_("cannot '%s' without a previous commit"),
|
||||
command_to_string(item->command));
|
||||
else if (!is_noop(item->command))
|
||||
fixup_okay = 1;
|
||||
|
|
|
@ -1596,6 +1596,32 @@ test_expect_success 'static check of bad command' '
|
|||
test C = $(git cat-file commit HEAD^ | sed -ne \$p)
|
||||
'
|
||||
|
||||
test_expect_success 'the first command cannot be a fixup' '
|
||||
rebase_setup_and_clean fixup-first &&
|
||||
|
||||
cat >orig <<-EOF &&
|
||||
fixup $(git log -1 --format="%h %s" B)
|
||||
pick $(git log -1 --format="%h %s" C)
|
||||
EOF
|
||||
|
||||
(
|
||||
set_replace_editor orig &&
|
||||
test_must_fail git rebase -i A 2>actual
|
||||
) &&
|
||||
grep "cannot .fixup. without a previous commit" actual &&
|
||||
grep "You can fix this with .git rebase --edit-todo.." actual &&
|
||||
# verify that the todo list has not been truncated
|
||||
grep -v "^#" .git/rebase-merge/git-rebase-todo >actual &&
|
||||
test_cmp orig actual &&
|
||||
|
||||
test_must_fail git rebase --edit-todo 2>actual &&
|
||||
grep "cannot .fixup. without a previous commit" actual &&
|
||||
grep "You can fix this with .git rebase --edit-todo.." actual &&
|
||||
# verify that the todo list has not been truncated
|
||||
grep -v "^#" .git/rebase-merge/git-rebase-todo >actual &&
|
||||
test_cmp orig actual
|
||||
'
|
||||
|
||||
test_expect_success 'tabs and spaces are accepted in the todolist' '
|
||||
rebase_setup_and_clean indented-comment &&
|
||||
write_script add-indent.sh <<-\EOF &&
|
||||
|
|
Loading…
Reference in a new issue