From: "René Scharfe" <l.s.r@web.de>
To: Philippe Blain <levraiphilippeblain@gmail.com>,
Johannes Sixt <j6t@kdbg.org>
Cc: Git Mailing List <git@vger.kernel.org>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH 2/1] t3920: support CR-eating grep
Date: Sat, 3 Dec 2022 08:09:23 +0100 [thread overview]
Message-ID: <ae2862dd-78c2-238f-46df-4a25643046ae@web.de> (raw)
In-Reply-To: <cd92755f-de16-0df9-075e-2bd5ab0dd4fb@gmail.com>
Am 03.12.22 um 00:14 schrieb Philippe Blain:
> Hi René,
>
> Le 2022-12-02 à 11:51, René Scharfe a écrit :
>> grep(1) converts CRLF line endings to CR on current MinGW:
>>
>> $ uname -sr
>> MINGW64_NT-10.0-22621 3.3.6-341.x86_64
>
> I don't really know the conventions in this regards, but for me
> "MinGW" refers to the port of GCC to Windows. Here it would be more
> correct to refer to "the Git for Windows flavor of MSYS2" or something
> like this, in my (maybe uninformed) opinion.
The thing I downloaded and installed is the "Git for Windows SDK", so I
could use that name instead.
>
>>
>> $ printf 'a\r\n' | hexdump.exe -C
>> 00000000 61 0d 0a |a..|
>> 00000003
>>
>> $ printf 'a\r\n' | grep . | hexdump.exe -C
>> 00000000 61 0a |a.|
>> 00000002
>>
>> Create the intended test file by grepping the original file with LF
>> line endings and adding CRs explicitly.
>>
>> The missing CRs went unnoticed because test_cmp on MinGW ignores line
>> endings since 4d715ac05c (Windows: a test_cmp that is agnostic to random
>> LF <> CRLF conversions, 2013-10-26).
>
> Reading that commit's messages, if I understand correctly it's more MSYS2's Bash
> that is the culprit, rather than its grep, no?
4d715ac05c blames bash for converting LF to CRLF. Above I blame grep
for converting CRLF to LF. The experiment to confirm the latter leaves
the possibility that bash somehow inserts a CR eater between grep and
hexdump. If it does then it is quite selective; e.g. cat passes CRs on
unscathed:
$ printf 'a\r\nb\n' | grep . | hexdump.exe -C
00000000 61 0a 62 0a |a.b.|
00000004
$ printf 'a\r\nb\n' | cat | hexdump.exe -C
00000000 61 0d 0a 62 0a |a..b.|
00000005
>> Fix this test anyway to avoid
>> depending on that special test_cmp behavior, especially since this is
>> the only test that needs it.
>
> Do you mean the only test in that file, or in the whole Git test suite (which would
> mean after this series we could completely remove the Windows-specific 'test_cmp' ) ?
Both.
>>
>> Piping the output of grep(1) through append_cr has the side-effect of
>> ignoring its return value. That means we no longer need the explicit
>> "|| true" to support commit messages without a body.
>>
>> Signed-off-by: René Scharfe <l.s.r@web.de>
>> ---
>> t/t3920-crlf-messages.sh | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/t/t3920-crlf-messages.sh b/t/t3920-crlf-messages.sh
>> index a58522c163..67fd2345af 100755
>> --- a/t/t3920-crlf-messages.sh
>> +++ b/t/t3920-crlf-messages.sh
>> @@ -12,7 +12,7 @@ create_crlf_ref () {
>> cat >.crlf-orig-$branch.txt &&
>> cat .crlf-orig-$branch.txt | append_cr >.crlf-message-$branch.txt &&
>> grep 'Subject' .crlf-orig-$branch.txt | tr '\n' ' ' | sed 's/[ ]*$//' | tr -d '\n' >.crlf-subject-$branch.txt &&
>> - { grep 'Body' .crlf-message-$branch.txt >.crlf-body-$branch.txt || true; } &&
>> + grep 'Body' .crlf-orig-$branch.txt | append_cr >.crlf-body-$branch.txt &&
>> LIB_CRLF_BRANCHES="${LIB_CRLF_BRANCHES} ${branch}" &&
>> test_tick &&
>> hash=$(git commit-tree HEAD^{tree} -p HEAD -F .crlf-message-${branch}.txt) &&
>> --
>> 2.38.1.windows.1
>>
>
> apart from the minor things in the commit message, the 3 patches look good to me :)
> Here is my Acked-by: for all 3 :
>
> Acked-by: Philippe Blain <levraiphilippeblain@gmail.com>
>
> Thanks for detailed messages as always, it definitely went over my radar at the time
> that both 'grep' and 'test_cmp' acted differently on Windows.
>
> Cheers,
> Philippe.
> p.s. I wonder what happened for format-patch to generate these 2/1, 3/1 and 4/1 patch prefixes :P
Hand-edited..
René
next prev parent reply other threads:[~2022-12-03 7:09 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-21 17:58 [PATCH] t3920: don't ignore errors of more than one command with `|| true` Johannes Sixt
2022-11-21 22:56 ` René Scharfe
2022-11-22 0:53 ` Junio C Hamano
2022-11-22 18:28 ` Philippe Blain
2022-11-22 22:24 ` Ævar Arnfjörð Bjarmason
2022-11-22 22:37 ` Johannes Sixt
2022-11-22 22:57 ` Ævar Arnfjörð Bjarmason
2022-11-23 0:55 ` Junio C Hamano
2022-12-02 16:51 ` [PATCH 2/1] t3920: support CR-eating grep René Scharfe
2022-12-02 23:14 ` Philippe Blain
2022-12-03 7:09 ` René Scharfe [this message]
2022-12-02 23:32 ` Eric Sunshine
2022-12-03 7:12 ` René Scharfe
2022-12-05 1:08 ` Junio C Hamano
2022-12-05 8:28 ` René Scharfe
2022-12-05 9:32 ` Junio C Hamano
2022-12-05 10:43 ` René Scharfe
2022-12-02 16:51 ` [PATCH 3/1] t3920: simplify redirection of loop output René Scharfe
2022-12-02 16:51 ` [PATCH 4/1] t3920: replace two cats with a tee René Scharfe
2022-12-03 5:09 ` Eric Sunshine
2022-12-03 8:43 ` René Scharfe
2022-12-03 12:53 ` Ævar Arnfjörð Bjarmason
2022-12-03 17:22 ` René Scharfe
2022-12-04 9:34 ` Ævar Arnfjörð Bjarmason
2022-12-04 16:39 ` Eric Sunshine
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ae2862dd-78c2-238f-46df-4a25643046ae@web.de \
--to=l.s.r@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=levraiphilippeblain@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).