2009-09-01 2 views
1

웹 사이트에는 사용자와 일치하도록 변경되는 섹션이 있습니다. (예제는 크게 단순화되었습니다). GIT가 PHP 행을 엉망으로 만들었습니다.

user:Mike 
last visit:Yesterday 

내용을 [지금 변경할 수없는] 업데이트하는 데 사용하는 방법

는 PHP는 기본 콘텐츠에 대한 HTML 웹 페이지를 검색하고 사용자에게 제공하기 전에 새로운 내용으로 대체한다는 것이다. 우리가 GIT와 사이트 백업 시작까지
$stats = "user:Mike 
last visit:Yesterday"; 
$defaults = "user:Guest 
last visit:None"; 
$code = implode($stats, explode($defaults, $code)); 

모든

괜찮다고 [처벌에 대한 열성을, 우리는있다].

GIT가 HTML 페이지에서 개행 문자를 변경하여 php가 더 이상 원본 텍스트를 찾을 수없는 것 같습니다.

개행 문자가 저장되거나 변경되는 방식을 이해하지 못하는 경우가 있지만 제출 도중 GIT에서 오류가 발생하여 개행을 변경하고 '잠금 해제'또는 '계속'을 제안해야하는 경우가 있습니다.

외부에 저장된 사본의 기본 텍스트를 해당 페이지에 복사/붙여 넣기 할 때까지 사이트가 작동하지 않고 커밋하지 않습니다.

정규식을 사용하여 검색/바꾸기를 할 수 있지만 불필요한 표현을 피하기에 충분하다는 것을 알고 있습니다.

로컬 컴퓨터가 Windows를 실행합니다. 서버는 Unix를 실행합니다.

+0

정말요? 그것은 단지 고통입니다. – karim79

답변

6

http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

CRLF

:

$stats = "user:Mike\r\nlast visit:Yesterday"; 

또는를 : 당신은 명시 적으로 당신이 좋아 할 하나의 상태 수 . 경로에 CRLF 속성을 설정

설정

는 "텍스트"파일로 경로를 표시하기위한 것입니다. core.autocrlf 변환 은 검사로 콘텐츠 유형을 으로 추측하지 않고 이루어집니다.

설정 해제 반환하기를 경로가 체크인 또는 체크 아웃시 모든 끝 (end-of-line) 변환을 시도하지 자식을 알려줍니다 에 CRLF 속성.

이야기의 자식은 해당 파일에 대한 Unsetcrlf을 지정하여있는 CRLF로 변환하지 않도록하고 문제가 사라한다.

+0

이 작업을 수행하는 방법을 알려주십시오. – SamGoody

+1

http://progit.org/book/ch7-2.html은 gitattributes 파일의 작동 방식에 대해 사용자에게 친숙한 약간의 개요를 제공합니다. 그러나 구체적으로, CRLF 변환해서는 안되는 파일들로 디렉토리에 들어가서'.html -crlf'라는 줄을 내용으로하는'.gitattributes'라는 이름의 파일을 만듭니다. . 그러면 git이 해당 디렉토리 내의 .html 파일에 대한 CRLF 변환을 중지합니다. – Amber

1

Windows 개행 문자 (\r\n 또는 0x0D0A)가 Unix 개행 문자 (\n 또는 0x0A)로 변환 된 것으로 보입니다. HTML에 Windows 줄 끝이 포함되어 있으면 문자열 중간에 끝나는 Unix 스타일 줄을 검색 할 수 없습니다. 이 속성은 라인 종료 규칙을 제어

$stats = "user:Mike\nlast visit:Yesterday"; 
+0

실제 내용은 매우 길고 복잡하며 [인간 디자이너가 요구하는] 공간을 \ r \ n으로 대체 할 수 없습니다. \ r \ n뿐만 아니라 편집기에 표시되는 새 행을 사용할 수있는 방법이 있다면 그렇게 할 수 있습니까? 기록을 위해 GIT로 전환하기 전에 내 컴퓨터가 Windows 상자인데도 아무런 문제가 없었습니다. – SamGoody

+0

GIT에서 줄 바꿈 오류가 발생하면 '계속'및 '잠금 해제'옵션간에 차이가 있습니까? – SamGoody

+0

나는 힘내는 사람이 아니기 때문에 나는 말할 수 없다. Dav가 해결책을 갖고있는 것 같습니다. –

2

core.autocrlf이 "입력"으로 설정되어 있지 않은지 확인하십시오 (예 :"git config --get core.autocrlf"사용).

이 구성 변수는 MS Windows End-of-Line 규칙 "\ r \ n"(CRLF)을 UNIX 규칙 "\ n"(LF)으로 변환합니다. 자세한 내용은 git-config 맨 페이지를 참조하십시오. crlfDav mentioned in answer에 더 미세 조정 된 선택이 있어야합니다.

0

설치 중에 mysGit은 줄 바꿈을 그대로 두는 옵션을 제공합니다.

업그레이드 한 후 문제가 해결되었습니다.

관련 문제