git clone 시 에러 - fatal: early EOF fatal: index-pack failed
사내에 꽤 오래되고 큰 git 저장소가 있는데 새로운 PC 에서 clone 을 수행하자 다음과 같은 오류가 발생했습니다.
$ git clone https://my.git.server/group/repos1.git Cloning into 'repos1'... remote: Counting objects: 4793, done. remote: Compressing objects: 100% (3256/3256), done. fatal: read error: Invalid argument, 255.05 MiB | 1.35 MiB/s fatal: early EOF fatal: index-pack failed
.gitconfig 수정
stackoverflow 에서 유사한 사례를 확인한 후에 가장 간단해 보이는 해결책에서 제시한 대로 .gitconfig 에 다음 설정을 추가해 보았습니다.
vi ~/.gitconfig
~/.gitconfig
[core] packedGitLimit = 512m packedGitWindowSize = 512m [pack] deltaCacheSize = 2047m packSizeLimit = 2047m windowMemory = 2047m
하지만 index-pack failed 에러는 다시 발생했고 메모리를 2배로 늘려봐도 마찬가지였습니다.
[core] packedGitLimit = 1024m packedGitWindowSize = 1024m [pack] deltaCacheSize = 2047m packSizeLimit = 2047m windowMemory = 2047m
일부만 clone
그후에 좀 복잡해 보이는 2번째 방법대로 다음 단계를 시도했습니다.
압축 사용하지 않도록 설정
$ git config --global core.compression 0
저장소 전체가 아닌 일부만 clone 하도록 실행
$ git clone --depth 1 https://my.git.server/group/repos1.git
나머지 부분 clone
$ cd repos1 $ git fetch --unshallow
또는 아래 명령어 실행
$ git fetch --depth=2147483647
나머지 부분 pull
$ git pull --all
하지만 위 방법은 저장소를 일부만 clone 하는 2번째 단계에서 막혔습니다.
저장소 접근 프로토콜 변경
이제 무엇을 해야 하나 고민하다가 다음과 같이 저장소 접근 프로토콜을 HTTPS 에서 SSH 로 변경했더니 정상적으로 clone 이 이루어졌습니다.
$ git clone ssh://git@my.git.server/group/repos1.git
Stackoverflow 에 있는 방법대로 해도 안 될 경우 마지막 방법을 시도해 보세요.