git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2] sequencer: advise if skipping cherry-picked commit

From
Philippe Blain <levraiphilippeblain@gmail.com>
Date
Aug 18, 2021, 22:45 UTC
Message-ID
<cc044079-c40d-ab79-8afa-8a1dfa66f279@gmail.com>
In-Reply-To
<e363df27-a99e-1a43-f493-ed90de7b6363@gmail.com>
Hi Phillip,
Le 2021-08-18 à 06:02, Phillip Wood a écrit :
Show 39 quoted lines
> On 12/08/2021 18:45, Philippe Blain wrote:
>> Hi Josh,
>> [...]
>>> diff --git a/sequencer.c b/sequencer.c
>>> index 7f07cd00f3..1235f61c9d 100644
>>> --- a/sequencer.c
>>> +++ b/sequencer.c
>>> @@ -5099,6 +5099,7 @@ static int make_script_with_merges(struct pretty_print_context *pp,
>>>       int keep_empty = flags & TODO_LIST_KEEP_EMPTY;
>>>       int rebase_cousins = flags & TODO_LIST_REBASE_COUSINS;
>>>       int root_with_onto = flags & TODO_LIST_ROOT_WITH_ONTO;
>>> +    int skipped_commit = 0;
>>>       struct strbuf buf = STRBUF_INIT, oneline = STRBUF_INIT;
>>>       struct strbuf label = STRBUF_INIT;
>>>       struct commit_list *commits = NULL, **tail = &commits, *iter;
>>> @@ -5149,8 +5150,13 @@ static int make_script_with_merges(struct pretty_print_context *pp,
>>>           oidset_insert(&interesting, &commit->object.oid);
>>>           is_empty = is_original_commit_empty(commit);
>>> -        if (!is_empty && (commit->object.flags & PATCHSAME))
>>> +        if (!is_empty && (commit->object.flags & PATCHSAME)) {
>>> +            advise_if_enabled(ADVICE_SKIPPED_CHERRY_PICKS,
>>> +                    _("skipped previously applied commit %s"),
>>> +                    short_commit_name(commit));
>>> +            skipped_commit = 1;
>>>               continue;
>>> +        }
>>>           if (is_empty && !keep_empty)
>>>               continue;
>>
>> For interactive rebase, an alternate implementation, that I suggested in [1] last summer, would be to keep
>> the cherry-picks in the todo list, but mark them as 'drop' and add a comment at the
>> end of their line, like '# already applied' or something like this, similar
>> to how empty commits have '# empty' appended. I think that for interactive rebase, I
>> would prefer this, since it is easier for the user to notice it and change the 'drop'
>> to 'pick' right away if they realise they do not want to drop those commits (easier
>> than seeing the warning, realising they did not want to drop them, aborting the rebase
>> and redoing it with '--reapply-cherry-picks').
> 
> That would be nice, but we could always add it in the future if Josh does not want to implement it now. At the moment the function that creates the todo list does not know if it is going to be edited, I'm not sure how easy it would be to pass that information down.

Well, I'm not sure we need to ? If we change the 'pick' to 'drop', instead of not writing these lines to the todo list, the cherry-picked commits will get dropped either way, no? Unless I'm missing something - I think you are way more well-versed in the sequencer code than me :)

Show 8 quoted lines
>>
>> Like Junio remarked, it is a little unfortunate that some logic is duplicated between
>> 'sequencer_make_script' and 'make_script_with_merges', such that your patch has to do
>> the same thing at two different code locations. Maybe a preparatory cleanup could add
>> a new function that takes care of the duplicated logic and call if from both ? I'm
>> just thinking out loud here, I did not analyze in details if this would be easy/feasible...
> 
> I think feasible but not easy (or required for this change), it would also complicate the code in a different way as I think we'd have to add some conditionals for whether we are recreating merges or not.
Yes, I agree it's not required for this change.
Cheers,
Philippe.
Previous: Phillip WoodNext: Phillip Wood
Message 12 of 18 in “sequencer: warn on skipping previously seen commit”
  1. sequencer: warn on skipping previously seen commitJosh Steadmon, Aug 4, 2021
  2. Junio C HamanoAug 4, 2021
  3. Phillip WoodAug 5, 2021
  4. Junio C HamanoAug 5, 2021
  5. sequencer: advise if skipping cherry-picked commitJosh Steadmon, Aug 10, 2021
  6. Junio C HamanoAug 10, 2021
  7. Phillip WoodAug 18, 2021
  8. Josh SteadmonAug 30, 2021
  9. Philippe BlainAug 12, 2021
  10. Junio C HamanoAug 12, 2021
  11. Phillip WoodAug 18, 2021
  12. Philippe BlainAug 18, 2021
  13. Phillip WoodAug 19, 2021
  14. Josh SteadmonAug 30, 2021
  15. Junio C HamanoAug 25, 2021
  16. sequencer: advise if skipping cherry-picked commitJosh Steadmon, Aug 30, 2021
  17. Junio C HamanoAug 30, 2021
  18. Junio C HamanoAug 30, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.