윈도우 환경에서는 Git에서 autocrlf = true
설정을 많이 사용하는데, autocrlf = true
는 다음과 같은 기능을 한다.
Git은 커밋할 때 자동으로 CRLF를 LF로 변환해주고 반대로 Checkout 할 때 LF를 CRLF로 변환해 주는 기능이 있다. core.autocrlf
설정으로 이 기능을 켤 수 있다. 윈도우에서 이 값을 true로 설정하면 Checkout 할 때 LF 문자가 CRLF 문자로 변환된다.
즉 윈도우 사용자가 CRLF로 작업해도 저장소에는 LF로 저장된다.
윈도우 사용자가 맥이나 리눅스 사용자와 문제없이 협업할 수 있게 도와주므로 이 설정을 많이 사용한다.
이전까지는 이 설정을 사용하면서 전혀 문제가 없었다. 하지만 이번 프로젝트에서는 Prettier나 ESLint에서 End of Line이 LF이어야 한다는 규칙이 있어서 문제가 생겼다. 윈도우 사용자가 작업할 때는 파일이 CRLF 상태이기 때문에 검사를 통과하지 못한다.
다음 방법들을 떠올렸다.
autocrlf = false
로 변경한다. 앞에서 말한 autocrlf = true
의 이점이 사라진다.autocrlf = true
를 설정해야 한다..gitattributes
파일을 통해 파일의 형식이나 End of Line을 지정한다. 이 방식이 검사를 통과하는지 확인이 필요하다. (원본 Repository를 그대로 두고 싶다면 fork를 사용하여 테스트 가능)lf
를 사용한다. 이 방법은 기존 윈도우 환경과 어울리지 않는다.autocrlf = true
설정을 사용하면서 관련 규칙도 그대로 사용할 수 있는 방법은?https://docs.github.com/ko/get-started/getting-started-with-git/configuring-git-to-handle-line-endings https://www.lesstif.com/gitbook/git-crlf-20776404.html https://git-scm.com/docs/gitattributes#_eol
이거다 싶은 해결법이 없었는데 @조안나님께서 좋은 아이디어를 내주셨다!
Prettier 설정을 변경하고 .gitattributes
파일을 이용하는 방식이다.
Prettier에서 End of Line을 auto
로 설정하면 기존의 방식이 그대로 유지된다. ESLint의 검사도 문제없이 통과한다. ESLint의 관련 검사가 Prettier 설정에 의존하는 것으로 보인다.