[Haskell-cafe] Cabal revision online form silently converts file to Windows line endings, breaking patches

Joachim Durchholz jo at durchholz.org
Tue May 14 06:52:35 UTC 2019


The options for ignoring spaces are a technical solution, but they do 
not solve the social problem: That everybody dealing with the diffs 
needs to remember to apply them.

They aren't a full solution either. --ignore-trailing-space will also 
suppress trailing blanks.
This is exactly the kind of 99% solution that makes systems less stable: 
have a dozen or so 99%-reliable points in the system, and the overall 
system will fail constantly, every time for a different reason.

The options are still valuable as a stopgap solution, of course!

Am 14.05.19 um 08:19 schrieb Boris:
> Hi everyone,
> 
> Not to contribute to the solution of the problem itself, but to help with mitigation of annoying symptoms.
> 
> The diff program has an option to --ignore-trailing-space (-Z for short) that will totally ignore changes of `\n` to `\n\r` and vice versa. And so you will see only 'actual' changes.
> 
> Another generally useful option is --ignore-space-change (-b for short) that will ignore indentation changes. Another option that you may use is --ignore-all-space.
> 
> The good thing, git diff also understand these options.
> 
> Having less clutter when viewing diff is nice, but sometimes it prevents clean merges/rebases. For such cases you can pass a strategy to the merge command. For example,
> 
>    git merge -Xignore-trailing-space pr/xyz
>    git merge -Xignore-all-space pr/xyz
> 
> This allows you to merge a branch without the need to fight the line ending changes. Note that in some cases it doesn't work as good as you would expect it to work, but from my experience these options help a lot.
> 
> P. S. more information can be found in man diff, man git-diff and man git-merge.
> 
> Cheers,
> boris at d12frosted.io
> 
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Monday, May 13, 2019 7:21 PM, Joachim Durchholz <jo at durchholz.org> wrote:
> 
>> Actually this is much, much worse than annoying: All attempts to
>> checksum or diff files modified in this way will have to take line-end
>> differences into account, which will be a neverending source of bugs,
>> and as every unexpected behaviour may make people miss a security issue,
>> it's also a source of exploits (likely to become more interesting as
>> Haskell gets into high-value niches).
>>
>> Just my 2 cents from the sideline :-)
>>
>> Am 13.05.19 um 16:29 schrieb Dan Burton:
>>
>>> Two thoughts:
>>>
>>> 1.  this is annoying and I wish it didn't do this
>>> 2.  one workaround would be to always fetch v0 of the patch, and
>>>      maintain/generate custom versions of the patches equivalent to each
>>>      revision as needed.
>>>
>>>
>>> -- Dan Burton
>>> On Sun, May 12, 2019 at 7:22 PM Niklas Hambüchen <mail at nh2.me
>>> mailto:mail at nh2.me> wrote:
>>>
>>>      I noticed that if you use Hackage's online Cabal file editor, it
>>>      changes all your \\n line endings to \\r\\n.
>>>
>>>      This breaks all patches written against upstream .cabal files.
>>>
>>>      For example, if I write a patch against `cachix-0.2.0` git repo's
>>>      .cabal file, I can no longer apply it to whatever revisions of it
>>>      Hackage has, even if there's no real conflict.
>>>
>>>      Here's a reproduction (I changed only 1 line in the editor, and it
>>>      shows the whole file as changed):
>>>
>>>           diff -u <(curl
>>>      https://hackage.haskell.org/package/AesonBson-0.2.0/revision/0.cabal) <(curl
>>>      https://hackage.haskell.org/package/AesonBson-0.2.0/revision/1.cabal)
>>>
>>>      I found this especially problematic for nixpkgs, where patching
>>>      packages is a common practice.
>>>      _______________________________________________
>>>      Haskell-Cafe mailing list
>>>      To (un)subscribe, modify options or view archives go to:
>>>      http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>>      Only members subscribed via the mailman list are allowed to post.
>>>
>>>
>>> Haskell-Cafe mailing list
>>> To (un)subscribe, modify options or view archives go to:
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>> Only members subscribed via the mailman list are allowed to post.
>>
>> Haskell-Cafe mailing list
>> To (un)subscribe, modify options or view archives go to:
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> Only members subscribed via the mailman list are allowed to post.
> 
> 
> 



More information about the Haskell-Cafe mailing list