When working in a team, someone will be using windows, while some will be on mac. Usually, it won’t be an issue, but windows and mac/linux has a different way to interpret line breaks. It’s not displayed, but a line break consists of 2 characters in windows -
CRLF (Carriage return & Line break), but it is only 1 character on mac/linux -
LF (Line feed).
Usually the IDE is already defaulted to update the line breaks to the system default, even when the commited code is using another system. Then test failures might occur when your code is comparing texts with line breaks. It occurred to me recently when I was working on a new project. The codes are using
LF, and I happen to add a new unit test which compares some huge chunks of text, and I’m on windows with
The solution is to set the
autocrlf config in my git to
true. In this way, git will automatically convert the
LF when a file is added to the index, and
CRLF when code is checked out.
For windows users,
git config --global core.autocrlf true.
For linux users, who has someone on the team using windows,
git config --global core.autocrlf input. This will convert
LF when code is committed, but will not convert
CRLF when you check out codes.
So in this way, the codes on the repository will keep to just using
LF, but allowing windows users to have
CRLF when the code is local.