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

Re: [RFC PATCH 1/1] add-patch: Allow reworking with a file after deciding on all its hunks

From
Samuel Abraham <abrahamadekunle50@gmail.com>
Date
Jan 23, 2026, 21:43 UTC
Message-ID
<CADYq+fZ-U-iG==0e24E7ncNcjSUaBJz9qsKKEG6UENjxHnW4pg@mail.gmail.com>
In-Reply-To
<xmqqv7gsi8s6.fsf@gitster.g>
On Fri, Jan 23, 2026 at 5:38 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 15 quoted lines
>
> Abraham Samuel Adekunle <abrahamadekunle50@gmail.com> writes:
>
> > After deciding on all hunks in a file, the interactive session
> > advances automatically to the next file if there is another,
> > or the process ends.
> >
> > Allow for reworking with a file by introducing a what_now prompt which
> > allows for navigating with J/K or advancing to the next file if there is one.
>
> Describe "how" you are allowing these new things that users used not
> to be able to do (no, not in the "by adding this variable and
> switching on its value" sense, but in the "now deciding on all the
> hunks in a file does not automatically advance to the next file, and
> the user has to do X to move forward" sense).
Thank you for your feedback Junio.
Okay, this is noted.
Show 7 quoted lines
>
> > -     int colored = !!s->colored.len, quit = 0, use_pager = 0;
> > +     int colored = !!s->colored.len, quit = 0, use_pager = 0, skip_what_now = 0;
>
> This is getting overly long.  Wouldn't it be easier to follow if a
> preliminary patch split these existing variables into three
> independent definitions, and the main patch adds the fourth one?

Yes it will be easier to follow. I will do that.

Show 10 quoted lines
>
> > +                     if (s->file_diff_nr > 1)
> > +                             prompt_whatnow = _("What now? [J,K,q,>]? ");
> > +                     else
> > +                             prompt_whatnow = _("What now? [J,K,q]? ");
>
> I wonder if ">" has to be made so special.  Wouldn't it be easier to
> reason about the logic if ">" (and probably "<" to go back by one
> file) are added to the prompt in the same logic that decides 'g',
> 'k', 's', etc. should be shown using the "permitted" variable?

Yes this makes a lot of sense. Thank you for the guidance.

Show 5 quoted lines
>
> And when the inter-file navigation is in the permitted set (i.e.,
> there are multiple files involved), you'd show ">" (or "<", or both
> if you are dealing with the second file among three files) and ask,
> instead of silently moving to the next one, or something like that.
Yes I understand.
Show 7 quoted lines
>
> Organizing the logic that way will also allow you to move to the
> next file _without_ first having to decide on all hunks in the
> current file.  Just say ">" to deal with the next file first, and
> after you are done, either come back with "<", or the system notices
> that there are undecided hunks in the earlier file and takes you
> back automatically.

This is very insightful. I will work with this design in mind Thank you

Show 5 quoted lines
>
> I also have a hunch that with such a code structure you may not even
> need skip_what_now flag, but I haven't even written the code in my
> head, so if somebody tries to do so, they may discover the reason
> why such a flag is still needed.
Yes
Show 12 quoted lines
>
> >               strbuf_reset(&s->buf);
> >               if (file_diff->hunk_nr) {
> > -                     if (rendered_hunk_index != hunk_index) {
> > +                     if (rendered_hunk_index != hunk_index || skip_what_now == 1) {
>
> Style (which may become irrelevant, as I just said the variable may
> not be needed after all, but anyway).  Elsewhere skip_what_now is
> used only for "is it zero, or is it not zero?".  Comparing
> explicitly with 1 only here makes readers suspect if assigning 2 or
> 70 to the variable has special meanings and wastes their brain
> cycles.

I will give more thoughtful efforts into the next versions I will send after your recommendations.

Thank you very much
Abraham.
Previous: Junio C HamanoNext: Abraham Samuel Adekunle
Message 4 of 54 in “add-patch: Allow reworking with a file after deciding on its hunks”
  1. 0/1 add-patch: Allow reworking with a file after deciding on its hunksAbraham Samuel Adekunle, Jan 23, 2026
  2. 1/1 add-patch: Allow reworking with a file after deciding on all its hunksAbraham Samuel Adekunle, Jan 23, 2026
  3. Junio C HamanoJan 23, 2026
  4. Samuel AbrahamJan 23, 2026
  5. 0/1 Allow reworking with a file when making hunk decisionsAbraham Samuel Adekunle, Jan 27, 2026
  6. 1/1 Allow reworking with a file after deciding on all its hunksAbraham Samuel Adekunle, Jan 27, 2026
  7. Junio C HamanoJan 27, 2026
  8. Samuel AbrahamJan 28, 2026
  9. Samuel AbrahamJan 30, 2026
  10. Junio C HamanoJan 30, 2026
  11. Samuel AbrahamJan 30, 2026
  12. Junio C HamanoJan 31, 2026
  13. Samuel AbrahamFeb 2, 2026
  14. Junio C HamanoFeb 2, 2026
  15. Samuel AbrahamFeb 3, 2026
  16. Junio C HamanoJan 27, 2026
  17. Samuel AbrahamJan 28, 2026
  18. 0/3 introduce new option `rework-with-file`Abraham Samuel Adekunle, Feb 6, 2026
  19. 1/3 interactive -p: add new `--rework-with-file` flag to interactive machineryAbraham Samuel Adekunle, Feb 6, 2026
  20. Junio C HamanoFeb 6, 2026
  21. Samuel AbrahamFeb 6, 2026
  22. 2/3 add-patch: Allow interfile navigation when selecting hunksAbraham Samuel Adekunle, Feb 6, 2026
  23. Junio C HamanoFeb 6, 2026
  24. Samuel AbrahamFeb 6, 2026
  25. Junio C HamanoFeb 6, 2026
  26. Samuel AbrahamFeb 6, 2026
  27. Junio C HamanoFeb 6, 2026
  28. Samuel AbrahamFeb 6, 2026
  29. Samuel AbrahamFeb 12, 2026
  30. Junio C HamanoFeb 12, 2026
  31. Samuel AbrahamFeb 12, 2026
  32. Junio C HamanoFeb 12, 2026
  33. Samuel AbrahamFeb 12, 2026
  34. 3/3 add-patch: Allow proper 'git apply' when using the --rework-with-file flagAbraham Samuel Adekunle, Feb 6, 2026
  35. Junio C HamanoFeb 6, 2026
  36. Samuel AbrahamFeb 6, 2026
  37. Junio C HamanoFeb 6, 2026
  38. Samuel AbrahamFeb 6, 2026
  39. 0/4 introduce new option `--auto-advance`Abraham Samuel Adekunle, Feb 13, 2026
  40. 1/4 interactive -p: add new `--auto-advance` flagAbraham Samuel Adekunle, Feb 13, 2026
  41. Junio C HamanoFeb 13, 2026
  42. Samuel AbrahamFeb 14, 2026
  43. 2/4 add-patch: modify patch_update_file() signatureAbraham Samuel Adekunle, Feb 13, 2026
  44. Junio C HamanoFeb 13, 2026
  45. Samuel AbrahamFeb 14, 2026
  46. 3/4 add-patch: allow all-or-none application of patchesAbraham Samuel Adekunle, Feb 13, 2026
  47. 4/4 add-patch: allow interfile navigation when selecting hunksAbraham Samuel Adekunle, Feb 13, 2026
  48. 0/4 introduce new option `--auto-advance`Abraham Samuel Adekunle, Feb 14, 2026
  49. 1/4 interactive -p: add new `--auto-advance` flagAbraham Samuel Adekunle, Feb 14, 2026
  50. 2/4 add-patch: modify patch_update_file() signatureAbraham Samuel Adekunle, Feb 14, 2026
  51. 3/4 add-patch: allow all-or-none application of patchesAbraham Samuel Adekunle, Feb 14, 2026
  52. 4/4 add-patch: allow interfile navigation when selecting hunksAbraham Samuel Adekunle, Feb 14, 2026
  53. Junio C HamanoFeb 20, 2026
  54. Samuel AbrahamFeb 21, 2026

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.