2009-10-06 5 views
6

CentOS 4.2에서 svn 버전 1.3.1 (구성이 제어되는 CM 서버로 인해 업그레이드 할 수 없음)을 사용합니다.SVN : "Inconsistent line ending style"- 의도적으로^M이있는 파일 체크인

내 코드 (bash 스크립트)는 중요한 이유 때문에^M이 포함되어 있습니다. 불행하게도, 전복 날이 파일을 확인하지 않습니다 그것은 불평 :.

SVN은 : (세부 사항에 따라) 실패 커밋 :
SVN을 : 일관성 라인 스타일을
SVN 종료 : 커밋 메시지는 임시 파일에 남아 있었다 :

내 코드에서^M을 하나씩 지우면 체크 인 할 수 있음을 증명했습니다.^M이 의도적이라는 것을 서브 버전에 어떻게 알리고 파일을 체크인 할 수있게해야합니까?

답변

10

파일에서 svn : eol-style 속성을 제거해야합니다. Subversion은이 속성이 추가 될 때까지 파일의 줄 끝은 신경 쓰지 않았습니다. subversion book 인용하자면 : 이것은 기본적으로 서브 이 유형 줄 끝의 에 어떤 관심을 지불하지 않는다는 것을 의미

을 (EOL) 마커는 파일에 사용됩니다.

이 책은 당신이 원하지 않는 정확히 무엇 인의 svn:eol-style을 설정하여 라인 엔딩에 대한 서브 버전 관리를 할 수있는 방법 설명에 간다.

0

나는 그것을 문자열이나 뭔가로 사용하고 있다고 가정하고 있습니다. bash는 문자를 인코딩하는 방법이 없습니까?

svn propset svn:eol-style LF myscript.sh 

는 서브 버전은 항상 LF-스타일의 라인 엔딩을 필요로 파일을 처리하게됩니다 :

0

나는 당신이 svn:eol-style 속성을 사용할 필요가 있다고 생각.

0

svn : mime-type 속성을 none-text 기반 (application/octet-stream?)으로 설정할 수 있다고 생각합니다. 이것은 subversion이 줄 끝을 무시하게 만들 수도 있습니다.

svnbook의 File Content Type 섹션을보십시오.

1

또 다른 접근법은 처음부터 프로그램에서 제어 문자를 없애는 것입니다. 다른 호환성 이점이있을 수 있으며 나중에 편집 할 때의 문제점을 피할 수 있습니다.

당신은 예를 들어, 그래서

`printf '%b' '\015'` 

쉽게 떠들썩한 파티에서 \r을 생성 할 수 있습니다

$ echo abc`printf %b '\015'`def 
def 
$ 

또는 :

$ c=`printf %b '\015'` 
$ set | grep ^c= 
c=$'\r' 
$ 

(를 참고 : 내가 거기에 알고 printf를 호출하는 것보다 쉬운 방법. 불행히도, 그 eas 다른 방법은 bash와 posix shell에서 다릅니다.bash 전용 솔루션은 꽤 좋습니다 : $'\r'. 애쉬 만이 더 좋은 : c='\r. 화산재 또는 posix이기 때문에 ash이 표시되는지 확실하지 않습니다.

관련 문제