Error Msg
------------------------------------------------------------------------------------------
remote: error: remote: unable to find 1a0352d8d664add294d1a47c512aafcac48ccb8d
remote: fatal: unable to get type of object 1a0352d8d664add294d1a47c512aafcac48cremote: cb8d
error: git-upload-pack: git-pack-objects died with error.
fatal: git-upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header
Cause
------------------------------------------------------------------------------------------
GIT blob 중에 1a0352d8d664add294d1a47c512aafcac48ccb8d 를 찾을 수 없다는 메시지이다.
Disk 혹은 Memory 상의 문제일 수도 있고, 낮은 버전의 GIT 사용으로 인한 버그일 수도 있다는
말로 보아 이 에러의 근원은 알수 없다는 것으로 보인다.
본인이 이 에러메시지를 받은 상황은 다음과 같다. A라는 클라이언트에서 디렉토리를 git add하고나서
다른 클라이언트(B)에서 pull을 통해 받아보았는데, 디렉토리 안의 일부 하위 디렉토리안에 파일이
추가가 안되어서 다시 A 클라이언트에서 추가안된 하위 디렉토리를 git add하고 B 에서 받아보려는
순간 저 메시지가 발생하였다.
원래 directory 에 대해서는 blob 을 생성하지 않는데, 처음에는 저것을 blob으로 인식했다가
다시 커밋할때 저 파일이 지워저야 하는데, 지워지기 전에 받아서 그런거 같다. 언제 지워지는지는
잘 모르겠지만 일정시간( 한 10분 이내? )이 걸리는거 같다. 왜냐하면 다른쪽에서 저 repository를
복사한 경우 별 문제없이 최신 tree를 가져오기 때문이다.
Solution
------------------------------------------------------------------------------------------
최선의 해결책은 아직 나오지 않은 상태이다. 우선 다음과 같은 명령어로 저 object 가 log에서
어떤 파일이었는지를 알수 있다.
$ git log --raw | grep 1a0352d8d664add294d1a47c512aafcac48ccb8d
git log --raw 를 하면 커밋트리의 모든 blob 에 대한 hash값을 볼 수 있고, 그 blob이 가리키는
파일도 알 수 있다. 그래서 혹시나 동일 파일이 있으면 그 파일을 add 함으로서(내용이 바뀌지 않았다면
동일한 hash값을 얻을 수 있다) 복구 할 수는 있다.
최종적으로 선택한 임시방편은 지우고 다시 클론하는 방법이였다. ㅋㅋ 차후에 좀더 알아봐야 겠다.
'Tools for Dev' 카테고리의 다른 글
SyncToy 2.0 - 파일 동기화 프로그램 (0) | 2009.04.29 |
---|---|
Putty 한글 설정하기 (EUCKR) (4) | 2009.03.06 |
TeX MAKER - LaTex작성용 Editer (0) | 2009.02.16 |
vim 유용한 단축키 모음 (계속 정리) (0) | 2009.02.11 |
Zotero - 문헌관리에 도움을 주는 녀석 (0) | 2009.02.03 |
댓글