2011-11-02 1 views
4

similarquestions 두 가지를 보았지만 내 문제를 해결할 수 없어서 다시 묻습니다.Git push "오류 : index-pack이 9 번으로 인해 사망했습니다."

기존의 git 가능 프로젝트에 새로운 파일을 추가했으며이를 밀어 올리려고합니다. 내가 지금까지 시도

error: index-pack died of signal 9 332.28 MiB | 5712 KiB/s 
error: pack-objects died with strange error 
error: failed to push some refs to  '<username>@<my repo location' 

것들 :

  1. 가는이 100 %에 도달 할 때 내가 푸시를 할 때, 다음, 그들을 압축을 기록, 다음이 오류 함께 실패 REPO 및 .gitattributes에서 일부 파일 형식에 binary -delta 옵션을 설정 here

  2. 을 제안처럼 없는지, 쓰기 가능하게

  3. 나중에 폴더를 개별적으로 다시 추가하는보기로 폴더 중 일부를 이동하고 (삭제를 커밋하는 자식) 이동합니다.

아이디어가 부족합니다. :/어떤 제안이 있습니까? 어떤 조언을 주셔서 감사합니다 - 최대

EDIT - 그 이후로 드림 호스트가 과도한 메모리 소비로 인해 푸시를 중단했기 때문에 발견했습니다. (저는 이것을 dreamhost의 repo 서버에 복사하고 푸시하고 거기에서).

나는 found 일부를 pages으로 만들었습니다.이 문제를 방지하기 위해 git에서 NO_MMAP=1 옵션에 대해 이야기했지만 설치시 git 구성에 관해서 이야기합니다. 기존의 자식 설치에서이 옵션을 설정할 수 있습니까? 그것은 밀어 넣기를하고있는 git-inited 응용 프로그램을위한 config의 일부입니까, 아니면 repo에 대한 config의 일부입니까?

EDIT 2 - 위 페이지의 지침에 따라 NO_MMAP = 1 옵션 세트가 포함 된 로컬 git 바이너리를 다운로드하여 만들었습니다.

나는 이것이 내 경로에있는 dreamhost-installed 버전 이전인지 확인했다. "which git"은 내 로컬 버전을 보여주고있다. 그러나 나는 정확히 같은 문제를 겪는다.

NO_MMAP 옵션이 작동하도록하려면 내 저장소로 무엇인가를해야합니까, 아니면 문제가 뭔가요?

+2

당신은 당신이 밀어하려고하는 호스트를 유지합니까? 신호 9는 보내는 신호가 다소 강한 신호이며 원격 호스트의 누가/무엇이 그 신호를'index-pack '프로세스로 보내는지를 알아야합니다. 'dmesg' 또는 기계상의'/ var/log'의 내용을 검사하면 뭔가가 드러날 수 있습니다. –

+0

서버는 어떤 OS입니까? 창에서 procmon을 사용하여 파일 시스템에서 어떤 일이 일어나는지 볼 수 있습니다. 또는 Linux 나 유사한 시스템에서 strace/ltrace를 사용하는 방법을 알아낼 수 있습니까? –

+0

@EmilSit - 실험으로 방금 repo가있는 서버에 내 자식 앱 폴더를 복사하고 로컬 repo 폴더를 가리 키도록 구성을 변경하여 내 서버에서 서버가 * 일어나 * 모든 http 요청이 필요합니다. 나는 이것을 얻었다 :'Yikes! 귀하의 프로세스 중 하나 (자식, pid 7746) 과도한 자원 사용에 대한 살해당했습니다. 자세한 내용은 DreamHost 지원부에 문의하십시오.'공유 드림 호스트 서버를 볼 수 있듯이 (제 동료가 * 소유하지 않기 때문에 최소한 공유 비트를 소유하고 있습니다). –

답변

3

힘내는 특정 작업에서 다소 메모리를 많이 사용하므로 메모리 사용량을 늘리면 디스크 또는 네트워크 성능이 향상됩니다. 당신이 전문적으로 관리 힘내 호스팅 서비스를 개시 거래되고있다 (예 GitHub로 (. 예를 들어이 other SO question에 대한 몇 가지 설명을 참조)

을이 경우에, 나는 당신과 당신의 동료 효과적으로 다른 비용 절충을하고 있다고 생각 또는 BitBucket)를 사용하여 재무 저축 또는 기타 편의를 제공 할 수 있습니다 (아마도 배포 여부).

내가 추천 한 wiki/blog-post의 권장 사항을 따르는 것이 불편할 경우 GitHub 또는 Bitbucket으로 이동하는 것이 좋습니다. (나는 그 게시물들이 기술적으로 정확한 솔루션을 제공한다고 생각합니다.) Bitbucket은 무료 무제한 개인 저장소를 제공하므로 귀하의 힘내 호스팅을 위해 Dreamhost를 사용할 실질적인 비용이 들지 않습니다.

호스팅과 함께 사용하기위한 일종의 배포 솔루션이 필요하다면, Git 저장소를 호스트하는 데 드는 비용을 들이지 않고도 작업 디렉토리 만 Dreamhost로 자동 업데이트하여 호스팅 환경을 자동으로 업데이트 할 수 있습니다 모든 당신의 역사) Dreamhost에.

+0

감사합니다. Emil. 당신의 대답은 (특히 github가 아니라 "dreamhosthost"를 떠나라) 내가 발견 한 것입니다. git repo를 일시적으로 푸시 (엉덩이의 고통)를 시도했던 동일한 서버로 옮겨서 문제를 해결했고 dreamhost는 멋진 고객 지원 이메일을 보낸 후 내 메모리 제한을 실제로 늘 렸습니다. 그러나 분명히 그들은 처음에 이것을 비난하는 새로운 procwatch 데몬을 설치했습니다. –

+0

팁 주셔서 감사합니다. 내 VM의 메모리를 늘리고 문제를 해결했습니다. – greg

1

Dreamhost 서버를 사용하여 베어 리포 지 토리를 유지하는 경우 로컬에서 추가 및 커밋하고 .git 디렉토리를 DH까지 rsync 할 수 있습니다. 완료되면 서버의 [저장소 이름] .git/config로 이동하여 core.bare를 false에서 true로 변경합니다.

서버에서 작업 트리를 원한다면 정확히 무엇을 할 지 모르지만, 나에게 적합하지 않습니다.

0

이 문제가 있었지만 Capfile의 문제로 인해 발생했습니다 - capistrano가 업데이트되어 변경 사항이 capfile에 반영되지 않았습니다. 고정 최신 표준에 capfile 업데이트

...

2

때로는이 문제를로드 할뿐만 아니라 인해 기업 GitHub의에 발생합니다. 클론을 두 개의 작업으로 분리하는 것이 좋은 방법이라는 것을 알았습니다.이 작업은 서버의 부하를 줄여줍니다.

첫째, 얕은 복제 할 : git clone --depth 1 myRepo.git

다음, 복제를 입력하고 전체 복제 만들기 위해 역사의 모든 나머지를 얻을 : 당신이 자식의 이전 버전이있는 경우 cd myRepo && git fetch --unshallow

을하는 --unshallow 플래그를 지원하지 않으면 대신 git fetch --depth=1000000 또는 다른 적절한 수의 값을 사용할 수 있습니다.

좀 더 대안

이 블로그 게시물에서 설명 : https://blogs.atlassian.com/2014/05/handle-big-repositories-git/