development

파일을 바이너리 파일로 취급하도록 Subversion에 어떻게 지시합니까?

big-blog 2020. 11. 23. 19:34
반응형

파일을 바이너리 파일로 취급하도록 Subversion에 어떻게 지시합니까?


Subversion (svn)에게 파일을 바이너리 파일로 취급하도록 어떻게 지시합니까?


다음 을 사용하여 저장소에있는 파일을 바이너리 로 수동으로 식별 할 수 있습니다 .

svn propset svn:mime-type application/octet-stream <filename>

Subversion은 파일이 처음 추가 될 때 파일이 바이너리인지 여부를 확인하기 때문에 일반적으로 필요하지 않습니다. Subversion이 바이너리로 처리해야 할 때 특정 유형을 "텍스트"로 잘못 태그 지정하는 경우 해당 파일에 텍스트가 아닌 MIME 유형을 자동으로 태그 하도록 Subversion의 auto-props 기능구성 할 수 있습니다 . 파일에 구성된 속성에 관계없이 Subversion은 파일을 저장소 내에 바이너리 형식으로 저장합니다.

Subversion이 MIME 유형을 "텍스트"유형으로 식별하는 경우 svn diffsvn blame같은 이진 파일에서 사용할 수없는 특정 기능을 활성화 합니다. 또한 클라이언트별로 구성 할 수있는 자동 줄 끝 변환을 허용합니다.

자세한 내용 은 Subversion이 바이너리 파일을 어떻게 처리합니까?를 참조하십시오 .


Subversion 책의 367 페이지에서

가장 일반적인 의미에서 Subversion은 CVS보다 이진 파일을 더 우아하게 처리합니다. CVS는 RCS를 사용하기 때문에 변경되는 바이너리 파일의 연속적인 전체 복사본 만 저장할 수 있습니다. 그러나 Subversion은 텍스트 또는 이진 데이터를 포함하는지 여부에 관계없이 이진 차이 알고리즘을 사용하여 파일 간의 차이점을 표현합니다. 즉, 모든 파일이 저장소에 차등 (압축)되어 저장됩니다.

CVS 사용자는 데이터가 왜곡되는 것을 방지하기 위해 -kb 플래그로 바이너리 파일을 표시해야합니다 (키워드 확장 및 줄 끝 번역으로 인해). 그들은 때때로 이것을하는 것을 잊습니다.

Subversion은 더 편집증적인 경로를 취합니다. 첫째, 명시 적으로 요청하지 않는 한 어떤 종류의 키워드 나 줄 끝 번역도 수행하지 않습니다 (자세한 내용은 "키워드 대체"섹션 및 "줄 끝 문자 시퀀스"섹션 참조). 기본적으로 Subversion은 모든 파일 데이터를 리터럴 바이트 문자열로 취급하며 파일은 항상 번역되지 않은 상태로 저장소에 저장됩니다.

둘째, Subversion은 파일이 "텍스트"데이터인지 "바이너리"데이터인지에 대한 내부 개념을 유지하지만이 개념은 작업 복사본에만 존재합니다. svn 업데이트 중에 Subversion은 로컬로 수정 된 텍스트 파일에 대해 컨텍스트 병합을 수행하지만 바이너리 파일에 대해서는 수행하지 않습니다.

컨텍스트 병합이 가능한지 여부를 확인하기 위해 Subversion은 svn : mime-type 속성을 검사합니다. 파일에 svn : mime-type 속성이 없거나 텍스트 인 MIME 유형 (예 : text / *)이있는 경우 Subversion은 해당 파일을 텍스트로 간주합니다. 그렇지 않으면 Subversion은 파일이 바이너리라고 가정합니다. Subversion은 또한 svn import 및 svn add 명령에서 이진 감지 알고리즘을 실행하여 사용자를 돕습니다. 이 명령은 좋은 추측을 한 다음 추가되는 파일에 바이너리 svn : mime-type 속성을 설정합니다. (Subversion이 잘못 추측하면 사용자는 언제든지 속성을 제거하거나 직접 편집 할 수 있습니다.)

수작업 편집은

svn propset svn:mime-type some/type filename.extension

기본적으로 mime 유형을 octet-stream으로 설정해야합니다.

svn propset svn:mime-type application/octet-stream <filename>

'svn add'가 잘못된 유형을 추측하고 다음과 같은 오류를 표시하는 경우 :

svn: E200009: File 'qt/examples/dialogs/configdialog/images/config.png' has inconsistent newlines
svn: E135000: Inconsistent line ending style

해결 방법은 속성없이 파일을 추가 한 다음 두 번째 단계에서 속성을 설정하는 것입니다.

svn add --no-auto-props qt/examples/dialogs/configdialog/images/config.png
svn propset svn:mime-type image/png qt/examples/dialogs/configdialog/images/config.png

예를 들면 :

svn propset svn:mime-type image/png foo.png

Subversion 은 파일이 바이너리인지 여부 자동으로 감지 하려고하지만 svn propset을 사용하여 MIME 유형을 재정의 할 수 있습니다 . 예 : svn propset svn:mime-type application/octet-stream example.txt. 이렇게하면 파일이 텍스트 파일이 아닌 바이트 모음으로 작동합니다. 파일 이식성 에 대한 svn 매뉴얼도 참조하십시오 .


Windows에서 tortoise svn을 사용하는 경우 파일을 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동하십시오. 새로 만들기를 클릭하고 svn : mime-type 유형의 새 속성을 추가합니다. 가치 넣어 : application / octet-stream


svn은 MIME 유형 속성을 찾고 존재하지 않으면 텍스트라고 추측합니다. 이 속성을 명시 적으로 설정할 수 있습니다. http://svnbook.red-bean.com/en/1.5/svn.forcvs.binary-and-trans.html을 참조 하십시오.


Subversion FAQ에 따라 svn propset을 사용하여 svn : mime-type 속성을 application / octet-stream 으로 변경할 수 있습니다 .


일반적으로 기본적으로이 작업을 수행하지만 그렇지 않은 경우 파일 속성과 propset을 살펴볼 필요가 있습니다.

참고 URL : https://stackoverflow.com/questions/73797/how-do-i-tell-subversion-to-treat-a-file-as-a-binary-file

반응형