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