2014-10-23 4 views
1

바이너리로 PDF 만 저장하는 git repo가 ​​있습니다. 합계로 70 개의 PDF가 130MB이고 그 중 일부는 큽니다 (약 15MB). 일부 다른 자식 답변이 REPO을 재 포장하여이 문제를 해결 한 주장했다git clone, upload-pack out of memory

remote: Counting objects: 93, done. 
remote: fatal: Out of memory, malloc failed (tried to allocate 36864964 bytes) 
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 

: 나는 내 작품을 컴퓨터에 REPO를 복제 할 때 가 나는 오류가 발생합니다. 서버 레포에서 git repack --max-pack-size=5M -a -d 또는 git gc을 시도하면 동일한 malloc 오류가 발생합니다.

git 서버가 1and1에서 제공하는 개인 웹 공간에 있습니다. 프로세스에서 36864964 바이트의 메모리를 사용할 수 없다는 생각이 들었습니다.

서버 repo를 로컬 컴퓨터에 어떻게 복제 할 수 있습니까?

core file size   (blocks, -c) 0 
data seg size   (kbytes, -d) 131072 
scheduling priority    (-e) 0 
file size    (blocks, -f) unlimited 
pending signals     (-i) 48165 
max locked memory  (kbytes, -l) 64 
max memory size   (kbytes, -m) unlimited 
open files      (-n) 1024 
pipe size   (512 bytes, -p) 8 
POSIX message queues  (bytes, -q) 819200 
real-time priority    (-r) 0 
stack size    (kbytes, -s) unlimited 
cpu time    (seconds, -t) 1800 
max user processes    (-u) 90 
virtual memory   (kbytes, -v) 131072 
file locks      (-x) unlimited 

감사합니다 : 여기

서버에 ulimit -a 실행의 출력입니다.

+0

SFTP/SCP를 통해 전체 저장소를 로컬 컴퓨터로 다운로드하고 다시 리 팩할 수 있습니다. 잘 작동하면 서버에 다시 업로드하십시오. 백업을 잊지 마십시오. – nif

답변

1

나는 nif의 의견을 보았고 sftp를 통해 repo를 다운로드했습니다. 그런 다음 git repack --max-pack-size=3M -a -d을 사용하여 매우 낮은 크기로 재 포장했습니다. 그런 다음 서버에 다시 업로드했습니다.

이 시점에서 다른 오류가 발생했습니다 : fatal: unable to create thread: Resource temporarily unavailable. 이 시점에서 나는 이것이 나의 호스트의 메모리 부족 (아마도 스레드) 구성으로 인한 자원 할당 문제라고 거의 확신한다.

이 stackexchange 질문을 찾은 후 : git push fatal: unable to create thread: Resource temporarily unavailable 및 설정 :

git config pack.windowMemory "15m" 
git config pack.SizeLimit "3m" 
git config pack.threads "1" 

는 (숫자 임의로 낮은 선택)

지금은 성공적으로 내 로컬 컴퓨터에서 서버의 repo를 복제 할 수 있습니다! 처음부터 위의 세 줄을 사용하여 자식을 구성한 경우이 문제가 발생하지 않았을 것으로 판단됩니다.

다시 한 번 감사드립니다.