Re: [PATCH v4 2/2] rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
- From
Alban Gruin <alban.gruin@gmail.com>
- Date
- Jan 25, 2020, 15:17 UTC
- Message-ID
- <19b94763-0072-ba1b-c0a0-300ccf6a94df@gmail.com>
- In-Reply-To
- <fa4cecb1-4b42-d75b-e1e4-e0fa3bd13c6a@gmail.com>
Hi Phillip,
Le 19/01/2020 à 17:28, Phillip Wood a écrit :
> Hi Alban > > On 11/01/2020 17:39, Alban Gruin wrote:
Show 42 quoted lines
>> @@ -121,10 +125,26 @@ int edit_todo_list(struct repository *r, struct todo_list *todo_list,
>> if (initial && new_todo->buf.len == 0)
>> return -3;
>>
>> - /* For the initial edit, the todo list gets parsed in
>> - * complete_action(). */
>> - if (!initial)
>> - return todo_list_parse_insn_buffer(r, new_todo->buf.buf, new_todo);
>> + if (todo_list_parse_insn_buffer(r, new_todo->buf.buf, new_todo)) {
>> + fprintf(stderr, _(edit_todo_list_advice));
>> + return -4;
>> + }
>> +
>> + if (incorrect) {
>> + if (todo_list_check_against_backup(r, new_todo)) {
>> + write_file(rebase_path_dropped(), "");
>> + return -4;
>> + }
>> +
>> + if (incorrect > 0)
>> + unlink(rebase_path_dropped());
>> + } else if (todo_list_check(todo_list, new_todo)) {
>> + write_file(rebase_path_dropped(), "");
>
> We also need to create a backup from todo_list otherwise we'll be using
> a stale backup file for the in the clause above when the user edits the
> todo list to fix it. This test fails
>
> test_expect_success 'rebase.missingCommitsCheck = error when editing for a second time' '
> test_config rebase.missingCommitsCheck error &&
> (
> set_fake_editor &&
> FAKE_LINES="1 break 2 3" git rebase -i A D &&
> cp .git/rebase-merge/git-rebase-todo todo &&
> test_must_fail env FAKE_LINES=2 git rebase --edit-todo &&
> GIT_SEQUENCE_EDITOR="cp todo" git rebase --edit-todo &&
> git rebase --continue
> )
> '
> The second edit complains that commit B is missing even though we have
> already pick it. This is because we're using a stale backup file.
> Good catch. Fortunately this time, the fix is trivial, and the reroll will come very soon.
> Sorry to be the bearer of bad tidings >
No worries, this series wouldn't get very far without your feedback.
Show 10 quoted lines
> Phillip
>
>> + return -4;
>> + } else {
>> + todo_list_write_to_file(r, todo_list, todo_backup, shortrevisions, shortonto,
>> + -1, flags | TODO_LIST_SHORTEN_IDS | TODO_LIST_APPEND_TODO_HELP);
>> + }
>>
>> return 0;
>> }Thank you, Alban