2009-12-07 3 views
4

그래서 git-p4를 사용하여 p4에서 아무런 문제없이 가져올 수 있습니다. 모든 것이 작동하는 것처럼 보이지만 내 PNG 파일 (및 다른 파일)이 손상되고 있습니다.git-p4가 내 이미지 파일을 먹고 있습니다.

나는 gitattributes와 줄 끝 문제에 관해 읽었지만 아무 것도 최종 결과를 변경하지 않는 것 같습니다. 깨진 이미지.

내 속성 파일은 다음과 같습니다 바이너리

어떤 아이디어 .png를 *? 내가 이해할 때, 자식은이 도움없이 png가 바이너리 파일이라는 것을 알기에 충분히 영리해야한다.

이것은 p4-git이 Perforce에서 파일을 가져 오는 방법과 관련이 있습니까?

업데이트 : Windows입니다. 나는 그것이 중요 할 것임을 잊어 버렸다.

+0

Windows에서 힘내 도구를 사용하고 있습니까? –

+0

예, 죄송합니다. 이것은 Windows입니다. –

+1

파일 (예상 및 실제)을 비교하십시오.이것은 cr/lf 유형의 문제인지 아니면 다른 문제가 있는지 판단하는 데 도움이됩니다. – jdigital

답변

6

PNG 파일 형식에는 끝 변환을 수행하는 프로그램을 찾기 위해 특별히 설계된 헤더가 있으며 그렇지 않은 경우 오류가 발생합니다.

8 바이트의 PNG 파일은 다음과 같습니다. 89 50 4E 47 0D 0A 1A 0A, 특히 Unix 개행과 Windows 줄 바꿈이 포함되어 있기 때문에 선택됨 - 자동 변환을하는 프로그램이 자동으로 PNG를 무효화합니다. PNG Signature rationale

그래서 이것이 실제로 문제가되는 것 같습니다. Git이 문제라고 가정하지 않고 Perforce에서 가져 오기를 살펴보십시오. Perforce가 변환을 수행 중이거나 처음에 손상된 상태로 체크인되었으므로 원래의 문제점을 수정하거나 복제 할 수 없습니다.

+0

나는 동의한다. 그리고 나는 지난 밤에이 사고 방식을 취했다. git-p4 소스 및 문서를 통해 Perforce에서 파일을 가져온 방법을 확인했습니다. 그냥 p4 인쇄 // 경로 // 파일/수정 # 그래서, PNG 파일에이 시도하고 잘 보입니다. (또한 체크 인 된 파일은 괜찮습니다. 어떤 의미로 새로운 것은 아닙니다.) 현재 내 생각에 스트림이 읽고 쓰여지는 방식으로 Python 스크립트 내부에 어떤 종류의 손상이 발생합니다. (git-p4는 python 스크립트입니다). 하지만 다른 곳에서는이 보고서가 없습니다. 내 설정에서 뭔가 다른 것으로 생각하게 만듭니다. –

1

여기에는 (매우) 새어 난 추상화가 여러 층 있습니다.

먼저 PERFORCE 서버가 파일을 다음과 같이 저장할 수 있습니다. 둘째, PERFORCE 클라이언트가 줄 바꿈을 할 수 있습니다. 셋째, 파이썬 스크립트가 줄 바꿈을 할 수 있습니다 (있을 법하지 않음). 네 번째로, 자식은 줄 바꿈이 될 수 있습니다.

이제 창과 창에서만 git은 기본적으로 개행을 자동으로 mangle합니다. (git 커뮤니티의 99 %가이 기본값을 싫어하는 것처럼 보입니다.하지만 이는 분명히 Windows에서 유일한 기본 옵션입니다).

결과적으로 줄 바꿈 "문제점"이있는 경우 수동으로 각 계층을 조사하고 정확하게 줄 바꿈을 처리 할 방법을 지정하는 것이 좋습니다. 자동이 아닌 명시 적으로 작성하는 것이 좋습니다.

Windows 기본값이 상당히 다르므로 git의 구성을 먼저 조사하고 git의 기본값은 일부 버전과 일부 빌드에 따라 다를 수 있습니다. (즉, msysgit은 cygwin과 다르다 - cygwin의 자식은 다른 줄 바꿈 mangling을 가지고있다 - cygwin 자체).

즐기십시오.

0

PERFORCE에서 PNG 파일이 "바이너리"유형으로 설정되어 있는지 확인하십시오. Perforce에서 "텍스트"유형으로 설정된 무작위 바이너리 파일로이 문제가 발생했습니다. 왜 Perforce가 그 파일을 텍스트로 파생 시켰는지 모르겠지만 git-p4가 그 파일로 무엇을해야 하는지를 감지하는 데 문제가있었습니다.

관련 문제