문제
데스크탑이 충돌했을 때 Eclipse Workspace를 Linux에서 Windows로 옮겨야했습니다. 일주일 후 나는 그것을 Linux에 다시 복사하고, 행복하게 코딩하고, CVS에 커밋합니다. 그리고 아아, Windows Newlines는 많은 파일을 오염 시켰으므로 CVS Diff는 한 줄을 변경하더라도 전체 파일을 덤프합니다!
스크립트를 요리 할 수는 있지만 Eclipse 프로젝트 파일을 엉망으로 만들지 궁금합니다.
해결책
파일 인코딩을 설정하십시오
UTF-8
텍스트 파일이 Windows OS에만 국한되지 않고 이기종 개발자 데스크탑에서 가장 쉽게 공유되는 형식으로 저장되도록 새 파일에 대한 라인 엔딩 :
- 작업 공간 기본 설정 (일반 : 작업 공간)으로 이동
- 인코딩 텍스트 파일을 변경하십시오
UTF-8
- 새 텍스트 파일 줄 구분기를 다른 사람으로 변경하고 픽-리스트에서 Unix를 선택하십시오.
- 참고 : 기존 파일의 줄 종말을 변환하려면 Eclipse에서 파일을 열고 선택하십시오.
File : Convert Line Delimiters to : Unix
팁: 패키지 탐색기에서 선택한 다음 메뉴 항목으로 이동하여 기존 파일을 쉽게 변환 할 수 있습니다. File : Convert Line Delimiters to : Unix
다른 팁
편리한 bash 유틸리티가 있습니다. dos2unix
- DOS/MAC에서 UNIX TEXT FILE FORMAT CONVERTER로 배포판에 아직 설치하지 않은 경우 패키지 관리자를 통해 쉽게 설치할 수 있어야합니다. dos2unix 맨 페이지
Eclipse 솔루션 및 언급 된 도구 외에 또 다른 대답, 고려하다 튀기다. 정상과 Windows Linebreak 사이의 어느 쪽이든 '플립'할 수 있으며 파일의 타임 스탬프 및 기타 통계를 보존하는 것과 같은 좋은 일을합니다.
문제를 해결하기 위해 이와 같이 사용할 수 있습니다.
find . -type f -not -path './.git/*' -exec flip -u {} \;
(git을 사용하는 경우 .git 디렉토리를 무시하기 위해 조항을 제출하지만 Flip은 기본적으로 이진 파일을 무시하기 때문에 필요하지 않을 수 있습니다.)
당신은 그것을 시도 할 수 있습니다. 문제는 Windows가 새 라인이 주어지면 선 피드뿐만 아니라 캐리지 리턴을 삽입한다는 것입니다. Unix-Systems는 라인 피드를 삽입합니다. 따라서 여분의 캐리지 리턴 캐릭터는 당신의 일식이 신축성을 엉망으로 만드는 이유 일 수 있습니다.
프로젝트에서 하나 또는 두 개의 파일을 잡고 변환하십시오. 메모장 ++를 사용하여 그렇게 할 수 있습니다. 파일을 열고 Format-> Unix (Windows를 사용할 때)로 이동하십시오.
Linux에서는 명령 줄에서 이것을 시도합니다.
sed 's/$'"/`echo \\\r`/" yourfile.java > output.java
캐리지 리턴을 재귀 적으로 제거하려면 (\r
) 모든 아동 디렉토리의 CVS/* 파일에서 UNIX 쉘에서 다음을 실행하십시오.
find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;