Message ID | ebcba08f-3fbb-4130-93eb-d0e62bfe0a8a@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | use the pager in 'add -p' | expand |
Rubén Justo <rjusto@gmail.com> writes: > -+ test_write_lines P | > -+ ( > -+ GIT_PAGER="head -1" && > -+ export GIT_PAGER && > -+ test_terminal git add -p >actual > -+ ) && > -+ tail -n 7 <actual | test_decode_color >actual.trimmed && > -+ test_cmp expect actual.trimmed > ++ test_write_lines P q | GIT_PAGER="head -c 1" test_terminal git add -p >actual > +' "make test" has this to say: t3701-add-interactive.sh:619: error: head -c is not portable (use test_copy_bytes BYTES <file >out): test_write_lines P q | GIT_PAGER="head -c 1" test_terminal git add -p >actual gmake[1]: *** [Makefile:132: test-lint-shell-syntax] Error 1
On Sat, Jul 13, 2024 at 10:08:22AM -0700, Junio C Hamano wrote: > Rubén Justo <rjusto@gmail.com> writes: > > > -+ test_write_lines P | > > -+ ( > > -+ GIT_PAGER="head -1" && > > -+ export GIT_PAGER && > > -+ test_terminal git add -p >actual > > -+ ) && > > -+ tail -n 7 <actual | test_decode_color >actual.trimmed && > > -+ test_cmp expect actual.trimmed > > ++ test_write_lines P q | GIT_PAGER="head -c 1" test_terminal git add -p >actual > > +' > > "make test" has this to say: > > t3701-add-interactive.sh:619: error: head -c is not portable (use test_copy_bytes BYTES <file >out): test_write_lines P q | GIT_PAGER="head -c 1" test_terminal git add -p >actual > gmake[1]: *** [Makefile:132: test-lint-shell-syntax] Error 1 Ouch. I'll fix it. I think I'll go back to "head -1". But I'll wait to hear comments about the change in the message.
Rubén Justo <rjusto@gmail.com> writes:
> Ouch. I'll fix it. I think I'll go back to "head -1".
I think "head -<n>" is deprecated, too.
Say "head -n 1" probably, if you really wanted to take the first
line and quit.
Rubén Justo (4): add-patch: test for 'p' command pager: do not close fd 2 unnecessarily pager: introduce wait_for_pager add-patch: render hunks through the pager add-patch.c | 18 ++++++++++++--- pager.c | 45 +++++++++++++++++++++++++++++++++----- pager.h | 1 + t/t3701-add-interactive.sh | 44 +++++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+), 8 deletions(-) Range-diff against v1: 1: 4a5b6e6815 = 1: 6b37507ddd add-patch: test for 'p' command 2: bf8a68ac37 = 2: 5497fa020b pager: do not close fd 2 unnecessarily 3: aabd7da4d6 = 3: 30e772cf7c pager: introduce wait_for_pager 4: ff51cc32bd ! 4: f7cb00b654 add-patch: render hunks through the pager @@ Metadata ## Commit message ## add-patch: render hunks through the pager - Make the print command to trigger the pager when invoked using a capital + Make the print command trigger the pager when invoked using a capital 'P', to make it easier for the user to review long hunks. + Note that if the PAGER ends unexpectedly before we've been able to send + the payload, perhaps because the user is not interested in the whole + thing, we might receive a SIGPIPE, which would abruptly and unexpectedly + terminate the interactive session for the user. + + Therefore, we need to ignore a possible SIGPIPE signal. Add a test for + this, in addition to the test for normal operation. + + For the SIGPIPE test, we need to make sure that we completely fill the + operating system's buffer, otherwise we might not trigger the SIGPIPE + signal. The normal size of this buffer in different OSs varies from a + few KBs to 1MB. Use a payload large enough to guarantee that we exceed + this limit. + Signed-off-by: Rubén Justo <rjusto@gmail.com> ## add-patch.c ## @@ t/t3701-add-interactive.sh: test_expect_success 'print again the hunk' ' + test_cmp expect actual.trimmed +' + -+test_expect_success TTY 'P does not break if pager ends unexpectly' ' ++test_expect_success TTY 'P does not break if pager ends unexpectedly' ' + test_when_finished "rm -f huge_file; git reset" && + printf "%2500000s" Y >huge_file && + git add -N huge_file && -+ cat >expect <<-EOF && -+ <GREEN>+<RESET><GREEN>22<RESET> -+ <GREEN>+<RESET><GREEN>23<RESET> -+ <GREEN>+<RESET><GREEN>24<RESET> -+ 30<RESET> -+ 40<RESET> -+ 50<RESET> -+ <BOLD;BLUE>(1/1) Stage this hunk [y,n,q,a,d,s,e,p,?]? <RESET> -+ EOF -+ test_write_lines P | -+ ( -+ GIT_PAGER="head -1" && -+ export GIT_PAGER && -+ test_terminal git add -p >actual -+ ) && -+ tail -n 7 <actual | test_decode_color >actual.trimmed && -+ test_cmp expect actual.trimmed ++ test_write_lines P q | GIT_PAGER="head -c 1" test_terminal git add -p >actual +' + test_expect_success 'split hunk "add -p (edit)"' '