Subject: Re: What's cooking in git.git (Jan 2021, #02; Fri, 8)

From: Junio C Hamano <[email-masked]>
Date: Sat, 09 Jan 2021 15:08:41 -0800

David Aguilar <[email-masked]> writes:

> Fun times in sed portability land.  After a bit of experimentation,
> this is what I've managed to whip up:
>
> cr=$(printf '\x0d')
> sed -e "/^<<<<<<< /,/^=======$cr\{0,1\}$/d" -e '/^>>>>>>> /d' tiger
>
> - Instead of \r use printf to capture CR into a string so that we can
> embed the literal using $cr.
> - DQ "..." instead of SQ '...' to allow $cr to be substituted in the string.
> - Instead of \? use \{0,1\} which seems to work on both macOS and Linux.

Ah, all the fun with avoiding GNU-ism in scripts; thanks for
figuring it out.

I am perfectly fine with the above, but I also am OK with Perl
script.  We may even be able to generate three output files in a
single pass by passing their filenames and open them for writing in
the script.

> That seems to work and the tests now pass.
> If not sed, is there perhaps a perl equivalent for these multi-line
> delete-from-X-until-Y expressions that might provide better
> portability?

> I'll start putting together a patch shortly as this seems to work in
> practice.  Let me know if y'all have any sugs or if there are any
> portability pitfalls I'm not considering.