Re: [GSoC PATCH v3] add -p: show user's hunk decision when selecting hunks
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 4, 2026, 06:03 UTC
- Message-ID
- <xmqqzf6tncde.fsf@gitster.g>
- In-Reply-To
- <aVgTmYhosEiGG3th@Adekunles-MacBook-Air.local>
Abraham Samuel Adekunle <abrahamadekunle50@gmail.com> writes:
Show 17 quoted lines
> 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