add .gitattribute to prevent line ending conversion on any machine #479
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why
Git's line ending conversion has been tampering with our source code on GitHub Actions runners to be inequivalent to ones we use on our local machines.
Which line ending is used (LF vs CRLF) in raw string literals is determined by which one you use in the source file (well... they are "literals").
E.g. given the source code
the program will
True False
if the source file uses LF as newline charactersFalse True
if the source file uses CRLF as newline charactersOn our dev machines, we set
core.autocrlf=false
in Git and haveend_of_line = lf
in .editorconfig, so we always have LF as newline characters.GitHub Actions Windows runners seems to be using
core.autocrlf=true
, so all source files were checked out with CRLF line endings...(!!!) and hence the executables built has different behaviour, because it doesn't use equivalent source code!Unsetting the text attribute should disable line ending conversion entirely on any machine.
Ticket
https://desire2learn.atlassian.net/browse/VUL-447