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

Re: [GSoC PATCH v3] add -p: show user's hunk decision when selecting hunks

From
Samuel Abraham <abrahamadekunle50@gmail.com>
Date
Jan 4, 2026, 10:36 UTC
Message-ID
<CADYq+fZZAwavfi0qDxTMSGuVt41nh7vaKNngv_p93s+cwj++Cw@mail.gmail.com>
In-Reply-To
<xmqqzf6tncde.fsf@gitster.g>
On Sun, Jan 4, 2026 at 7:03 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 77 quoted lines
>
> Abraham Samuel Adekunle <abrahamadekunle50@gmail.com> writes:
>
> > When a user is interactively deciding which hunks to use or skip for
> > staging, unstaging, stashing etc, there is no way to know the
> > decision previously chosen for a hunk when navigating through the
> > previous and next hunks using K/J respectively.
> >
> > Improve the UI to explicitly show if a user has previously decided to
> > use a hunk (by pressing 'y') or skip the hunk (by pressing 'n').
> > This will improve clarity when and aid the navigation process for the
> > user.
> >
> > Reported-by: Junio C Hamano <gitster@pobox.com>
> > Signed-off-by: Abraham Samuel Adekunle <abrahamadekunle50@gmail.com>
> > ---
> >
> > Changes in v2:
> > --------------
> > - Modified t3701-add-interactive.sh for conform to new changes
>
> Here is how "cd t && sh t3701-add-interactive.sh -i -v" ends for me.
>
> expecting success of 3701.50 'print again the hunk (PAGER)':
>         test_when_finished "git reset" &&
>         cat >expect <<-EOF &&
>         <GREEN>+<RESET><GREEN>15<RESET>
>          20<RESET>
>         <BOLD;BLUE>(1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? <RESET>PAGER <CYAN>@@ -1,2 +1,3 @@<RESET>
>         PAGER  10<RESET>
>         PAGER <GREEN>+<RESET><GREEN>15<RESET>
>         PAGER  20<RESET>
>         <BOLD;BLUE>(1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? <RESET>
>         EOF
>         test_write_lines s y g 1 P |
>         (
>                 GIT_PAGER="sed s/^/PAGER\ /" &&
>                 export GIT_PAGER &&
>                 test_terminal git add -p >actual
>         ) &&
>         tail -n 7 <actual | test_decode_color >actual.trimmed &&
>         test_cmp expect actual.trimmed
>
> --- expect      2026-01-04 06:01:25.931220332 +0000
> +++ actual.trimmed      2026-01-04 06:01:26.079845771 +0000
> @@ -1,7 +1,7 @@
>  <GREEN>+<RESET><GREEN>15<RESET>
>   20<RESET>
> -<BOLD;BLUE>(1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? <RESET>PAGER <CYAN>@@ -1,2 +1,3 @@<RESET>
> +<BOLD;BLUE>(1/2) Stage this hunk (previous decision: use) [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? <RESET>PAGER <CYAN>@@ -1,2 +1,3 @@<RESET>
>  PAGER  10<RESET>
>  PAGER <GREEN>+<RESET><GREEN>15<RESET>
>  PAGER  20<RESET>
> -<BOLD;BLUE>(1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? <RESET>
> +<BOLD;BLUE>(1/2) Stage this hunk (previous decision: use) [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? <RESET>
> not ok 50 - print again the hunk (PAGER)
> #
> #               test_when_finished "git reset" &&
> #               cat >expect <<-EOF &&
> #               <GREEN>+<RESET><GREEN>15<RESET>
> #                20<RESET>
> #               <BOLD;BLUE>(1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? <RESET>PAGER <CYAN>@@ -1,2 +1,3 @@<RESET>
> #               PAGER  10<RESET>
> #               PAGER <GREEN>+<RESET><GREEN>15<RESET>
> #               PAGER  20<RESET>
> #               <BOLD;BLUE>(1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? <RESET>
> #               EOF
> #               test_write_lines s y g 1 P |
> #               (
> #                       GIT_PAGER="sed s/^/PAGER\ /" &&
> #                       export GIT_PAGER &&
> #                       test_terminal git add -p >actual
> #               ) &&
> #               tail -n 7 <actual | test_decode_color >actual.trimmed &&
> #               test_cmp expect actual.trimmed
> #
> 1..50

Thank you Junio for the reviews. I get the output when I run "cd t && ./t3701-add-interactive.sh -i -v"

[...] ok 49 - print again the hunk checking prerequisite: TTY mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-TTY" && ( cd "$TRASH_DIRECTORY/prereq-test-dir-TTY" && test_have_prereq PERL && # Reading from the pty master seems to get stuck _sometimes_ # on Mac OS X 10.5.0, using Perl 5.10.0 or 5.8.9. # # Reproduction recipe: run # # i=0 # while ./test-terminal.perl echo hi $i # do # : $((i = $i + 1)) # done # # After 2000 iterations or so it hangs. # https://rt.cpan.org/Ticket/Display.html?id=65692 # test "$(uname -s)" != Darwin && perl "$TEST_DIRECTORY"/test-terminal.perl \ sh -c "test -t 1 && test -t 2" ) prerequisite TTY not satisfied ok 50 # skip print again the hunk (PAGER) (missing TTY) ok 51 # skip P handles SIGPIPE when writing to pager (missing TTY)

So that test skipped on my end because of this `test "$(uname -s)" != Darwin &&` since I am working on a MacOS.

I will correct it and send an updated version. Thanks

Abraham
Previous: Junio C HamanoNext: Abraham Samuel Adekunle
Message 9 of 25 in “add -p: show hunk selection state when selecting hunks”
  1. add -p: show hunk selection state when selecting hunksAbraham Samuel Adekunle, Nov 30, 2025
  2. Junio C HamanoNov 30, 2025
  3. Abraham Samuel AdekunleDec 1, 2025
  4. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 1, 2026
  5. Junio C HamanoJan 1, 2026
  6. Samuel AbrahamJan 2, 2026
  7. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 2, 2026
  8. Junio C HamanoJan 4, 2026
  9. Samuel AbrahamJan 4, 2026
  10. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 4, 2026
  11. SZEDER GáborJan 5, 2026
  12. Samuel AbrahamJan 5, 2026
  13. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 6, 2026
  14. Kristoffer HaugsbakkJan 6, 2026
  15. Samuel AbrahamJan 6, 2026
  16. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 6, 2026
  17. Phillip WoodJan 6, 2026
  18. Ben KnobleJan 6, 2026
  19. Junio C HamanoJan 7, 2026
  20. Samuel AbrahamJan 6, 2026
  21. Samuel AbrahamJan 6, 2026
  22. Samuel AbrahamJan 7, 2026
  23. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 8, 2026
  24. Junio C HamanoJan 11, 2026
  25. Samuel AbrahamJan 11, 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.