On Wed, Sep 22, 2010 at 00:30, Jeff King <peff@peff.net> wrote:
Show 38 quoted lines
> On Wed, Sep 22, 2010 at 12:12:30AM +0000, Ævar Arnfjörð Bjarmason wrote:
>
>> 2010/9/21 Jeff King <peff@peff.net>:
>> > +However, it may happen that you do want to change the diff parameters
>> > +specifically for symlinks. You can do that by configuring the special
>> > +"SYMLINK" diff driver. For example, to add a newline to the end of
>> > +the symlink contents (and suppress the usual "no newline at end of file"
>> > +warning), you could configure:
>> > +
>> > +-----------------------------
>> > +[diff "SYMLINK"]
>> > + textconv = perl -pe 's/$/\n/'
>> > +-----------------------------
>>
>> That'll turn every \n in the stream into \n\n, not add a newline to
>> the end of the file. Don't you mean:
>>
>> perl -0666 -pe 's/$/\n/'
>
> Yeah, it will add a newline to the end of file, but it will also double
> existing newlines. I wanted something short and clear so the reader
> could understand what was going on, and symlink paths don't generally
> contain an extra newline.
>
> Just "perl -0pe 's/$/\n/'" would work, as symlink targets can't possibly
> have embedded NULs.
>
> But:
>
>> Or, more efficiently:
>>
>> perl -ple 'END { print }'
>
> That one is even more readable, IMHO. But it isn't right. :)
> The automatic line-handling actually adds the missing newline, so I
> think it would have to be:
>
> perl -ple ''