2010-08-08 3 views
0

git pre-auto-gc hook을 사용하고 싶지만 전혀 호출되지 않습니다.git pre-auto-gc hook이 전혀 호출되지 않았습니다.

파일이 실행 가능하며 git 1.7.1 및 1.5.6.5를 사용하여 테스트했는데 둘 다 예상대로 작동하지 않습니다 (git gc --auto을 실행하면 스크립트를 호출하지 않음).

누구에 대해 알고 있나요? 어쩌면 구성에서 someting을 설정하여이 훅을 인식하도록해야할까요?

나는 조금 구글하려하지만 난 ... :-)

감사 아무것도 찾지 못했습니다.

답변

0

나는 대답 할 수도 있습니다. gc.auto가 설정된 경우 gc.c의 자식 원본

, 난 (... 후크를 스퀴즈하는 방법은 두 가지가있는 need_to_gc 기능에서 실행되는

static int need_to_gc(void) 
{ 
    /* 
    * Setting gc.auto to 0 or negative can disable the 
    * automatic gc. 
    */ 
    if (gc_auto_threshold <= 0) 
    return 0; 

    /* 
    * If there are too many loose objects, but not too many 
    * packs, we run "repack -d -l". If there are too many packs, 
    * we run "repack -A -d -l". Otherwise we tell the caller 
    * there is no need. 
    */ 
    if (too_many_packs()) 
    append_option(argv_repack, 
        prune_expire && !strcmp(prune_expire, "now") ? 
        "-a" : "-A", 
        MAX_ADD); 
    else if (!too_many_loose_objects()) 
    return 0; 

    if (run_hook(NULL, "pre-auto-gc", NULL)) 
    return 0; 
    return 1; 
} 

IMO 제 단락 참조 0으로) 괜찮습니다. 하지만 두 번째는 hook이 실행되는 것을 막아서는 안되며, yes 또는 no가 필요한 경우 부울 인수를 전달해야합니다. 왜냐하면 지금처럼 그것은 당신이 그것을 원할 때 갈고리가 움직이지 않는다는 것에 다소 실망 스럽기 때문입니다.

그리고 나는 힘내 소스 코드를 발견했다. 정말 깨끗한 코드를 읽는 것이 정말 기쁩니다!

편집 : --auto 옵션을 제공했을 때 이전의 꽤 큰 repos에서 후크를 다시 테스트했으며 gc가 호출되지 않았습니다. 기본값 인 auto_threshold (분명히 27 임)은 너무 높을 수도 있고 극한 상황에서만 gc가 필요할 수도 있습니다.

어쨌든, 나는이 훅이 호출되지 않으므로 저를 괴롭게합니다.

+0

내가 궁금 해서요, 왜 gc가 실행되지 않을 것이라는 결정이 내려진다면 왜 그 훅을 실행하고 싶습니까? 이 훅은 실행될 예정인 경우 자동 gc를 거부 할 수있는 기회를주기 위해 설계되었습니다. 어떤 경우에도 gc가 실행되지 않으면 어떤 점이 보이지 않는 것 같습니다. –

+0

@Charles : 나는이 훅이 다른 어떤 것을 위해 사용되기 때문에이 훅을 실행시키고 싶습니다. 정적 HTML을 생성하기 위해 git 기반의 블로그 엔진을 작성하고 있습니다. 후크 (예를 들어 템플릿 변경의 경우)와 모든 html 파일을 재구성 할 수 있기를 원하며이 "pre-auto-gc hook"을 사용하는 것만 "깨끗한"방법이 필요합니다. – p4bl0

+0

저장소 변경 내용을 기반으로 콘텐츠를 생성하기 위해 후크를 사용하는 경우 사전 자동 gc가 완전히 부적절하지 않습니까? 포스트 커밋이나 포스트 업데이트가 더 적합하지 않습니까? –

관련 문제