2010-11-18 5 views
10

Git을 사용하여 일련의 바이너리 파일을 버전화하고 있습니다. 그들은 꽤 잘 압축하지만, 내가 중심에 놓을 때 내 중앙 저장소는 압축하지 않는 것 같습니다. 그들은 내 할당량의 상당한 양을 먹고 있기 때문에 원격 Repo가 GC를 수행하도록하는 방법이 있는지 알아보기를 원했습니다.Git을 사용하여 강제로 원격 Repo (GC) 적용

이것이 가능합니까? 내가 Project Locker에서 일하고있어 SSH에 대한 액세스 권한이 없어 GC에 직접 액세스 할 수 있습니다. 어떤 아이디어? 감사.

+0

리모컨의 gitconfig에 액세스 할 수 있습니까? – Cascabel

답변

8

git gc을 직접 실행할 수 없다면 자동으로 실행시켜야합니다. 당신은 그것을 완전히 통제 할 수는 없겠지만, 적어도 그것을 실행할 수 있어야합니다.

git gc --auto은 여러 명령으로 실행됩니다. 여기에 관련된 하나는 푸쉬의 일부로 팩을 받기 위해 리모컨에서 실행되는 수신 팩입니다. gc --auto 느슨한 객체가 충분할 때만 다시 포장하십시오. 컷오프는 config 매개 변수 gc.auto에 의해 결정되며 기본값은 6700입니다.

리모컨의 gitconfig에 액세스 할 수 있으면 해당 컷오프를 일시적으로 1로 설정할 수 있습니다. repo에 적어도 1 개의 느슨한 객체가 있어야하므로 다음에 밀어 넣을 때 gc --auto이 해당 작업을 수행해야합니다.

리모컨의 gitconfig에 액세스 할 수 없다면 느슨한 개체를 인위적으로 만드는 것만 큼 생각할 수 있습니다. 당신은 브랜치를 생성하고 브랜치 (다른 내용의) 작은 파일들을 커밋하고, 브랜치를 리모트로 밀어 낸 다음 리모트에서 브랜치를 삭제함으로써 그렇게 할 수 있습니다. (내용을 변경하는 것이 중요하거나 동일한 얼룩을 사용하기 만합니다.) 린스하고 반복하십시오.

+0

7000 개 정도의 텍스트 파일을 펌프하는 작은 앱을 만들 수도 있습니다. 내가 설정에 액세스 할 수 있다고 생각하지 않습니다. 나는 그것이 어떻게되는지 알려줄거야, 고마워! – jocull

+2

@jocull :'seq 1 7000 | 읽는 동안 n; echo $ n> $ n.txt' – Cascabel

+0

쉘 스크립트 란 무엇입니까? 어쨌든, 나는 Qt에서 진짜 빠른 것을 만들었고 모든 느슨한 객체들을 밀어 붙였습니다. 그것은 내 공간 사용에 차이를 만드는 것처럼 보이지 않았다. ProjectLocker에 연락하여 무슨 일이 일어나는지 확인해야 할 것입니다. 모든 사람의 도움에 감사드립니다. – jocull

1

양식 git-gcman page : 일부 자식 명령이 자동으로 자식 GC를 실행할 수 있습니다

; 자세한 내용은 아래의 --auto 플래그를 참조하십시오.

또한 :

이 옵션

--auto, 자식 GC 체크 어느 정돈 필요 여부; 그렇지 않으면 작업을 수행하지 않고 종료됩니다. 일부 자식 명령은 많은 느슨한 개체를 생성 할 수있는 작업을 수행 한 후에 git gc --auto를 실행합니다.

저장소에 너무 많은 개체 또는 너무 많은 팩이있는 경우 정리 작업이 필요합니다. 느슨한 객체의 수가 gc.auto 구성 변수의 값을 초과하면 git repack -d -l을 사용하여 모든 느슨한 객체가 단일 패키지로 결합됩니다. gc.auto의 값을 0으로 설정하면 느슨한 객체가 자동으로 패킹되지 않습니다.

팩 수가 gc.autopacklimit의 값을 초과하면 git repack의 -A 옵션을 사용하여 기존 팩 (.keep 파일로 표시된 팩 제외)이 단일 팩으로 통합됩니다. gc.autopacklimit를 0으로 설정하면 팩의 자동 통합이 비활성화됩니다.

그리고 결국

:

힘내 GC --auto 명령은 사전 자동 GC 후크를 실행합니다. 자세한 내용은 githooks (5)를 참조하십시오.

2

정말 끝까지 해결해야하는 문제입니다. 그들은 post-receive hook이나 cron job이나 이와 비슷한 일을 할 수 있습니다. 그러나 그들이 당신의 저장소를 관리해야한다면, 그것은 여러 가지 이유로 그것의 일부입니다.

+1

가끔은 다른 사람들이 문제를 해결할 때까지 기다릴 수는 없지만 동의하는 경향이 있습니다. 'gc'를 적정 수준으로 돌릴 수도 있지만, 바이너리 파일은 텍스트 콘텐츠가있는 것보다 빠르게 빠르게 부 풀리게 만듭니다. – Cascabel

+0

GC가 아닌 경우 나에게 더 많은 공간을 판매합니다. 비즈니스 POV를 사용하지 않는 것이 좋습니다. – jocull

관련 문제