개요

OS 별 개행 문자 차이는 svn 이나 git 같은 버전관리 시스템을 사용할 경우 여러가지 문제를 야기합니다.


다행히 git 은 Windows 와 Unix 계열의 CR/LF 차이로 인한 문제를 해결하기 위한 방법을 제공하고 있으므로 간단하게 설정 하나로 이 문제를 해결할 수 있었습니다.


최근에 Windows 에서 Linux 지원이 좋아지면서 IDE는 Windows 에서 실행하고 개발/테스트는 WSL(Windows Subsystem For Linux) 환경에서 구동하는데

이 경우 CR/LF 를 auto 설정해 놓았다면 Windows 에서 실행하는 IDE 는 개행을 CR/LF 로 설정하고 WSL 에서는 개항을 LF 로 인식하게 됩니다.


일반적인 소스 파일은 문제가 없지만 shell script 를 실행할 경우  CR 로 인해 다음과 같은 에러를 발생시킵니다.

$'\r': command not found
CODE


이 문제를 해결하려면 .gitattributes 에 파일 별로 CR/LF 여부를 설정해 주면 됩니다.


예로 Linux 에서 실행할 shell script 는 LF 만 개행으로 사용해야 하므로 다음과 같이 .sh 확장자에 대해 EOL 을 LF로 설정합니다.

.gitattributes

*.sh eol=lf
CODE


Windows 에서만 실행하는 batch file 이나 PowerShell 스크립트의 경우는 아래처럼 CR/LF 를 사용하도록 설정하면 됩니다.

.gitattributes

*.cmd eol=crlf
*.bat eol=crlf
*.ps1 eol=crlf
CODE




Ref