From: Samuel Abraham Date: Sun, 04 Jan 2026 10:36:03 GMT Subject: Re: [GSoC PATCH v3] add -p: show user's hunk decision when selecting hunks Message-ID: In-Reply-To: On Sun, Jan 4, 2026 at 7:03 AM Junio C Hamano wrote: > > Abraham Samuel Adekunle 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 > > Signed-off-by: Abraham Samuel Adekunle > > --- > > > > 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 && > +15 > 20 > (1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? PAGER @@ -1,2 +1,3 @@ > PAGER 10 > PAGER +15 > PAGER 20 > (1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? > 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.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 @@ > +15 > 20 > -(1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? PAGER @@ -1,2 +1,3 @@ > +(1/2) Stage this hunk (previous decision: use) [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? PAGER @@ -1,2 +1,3 @@ > PAGER 10 > PAGER +15 > PAGER 20 > -(1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? > +(1/2) Stage this hunk (previous decision: use) [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? > not ok 50 - print again the hunk (PAGER) > # > # test_when_finished "git reset" && > # cat >expect <<-EOF && > # +15 > # 20 > # (1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? PAGER @@ -1,2 +1,3 @@ > # PAGER 10 > # PAGER +15 > # PAGER 20 > # (1/2) Stage this hunk [y,n,q,a,d,k,K,j,J,g,/,e,p,P,?]? > # 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.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