2015-01-29 5 views
1

Git 사후 수신 후크를 작동 시키려고하고 있지만 작동하지 않는 것 같습니다.Git post-receive가 non-bare repo에서 작동하지 않음

내가 그 안에있는 모든이다 : 이것이 내가 그것을 밀어 수 있도록 (= 무시 나는 denyCurrentBranch 설정 한) 비 베어 저장소가

#!/bin/sh 
git checkout -f master 

하는 것으로.

그러나 내가 밀어 넣으면 git checkout -f 명령을 실행하지 않는 것 같습니다. 동일한 명령을 명령 줄에서 실행하면 예상대로 수행됩니다.

내 C 드라이브에서 로컬 저장소 만 사용하는 간단한 테스트 사례입니다.

베어 레포를 가지고 git push을 넣어서 수신 후크 작업을 할 수있었습니다. 나의 의도는 노출 후 "자동"repo (자동으로 git checkout -f을 수행해야 함)가 아닌 "웹 사이트"repo에 자동으로 푸시됩니다.

비 베어 메노에서 작동하지 않는 이유는 무엇입니까? 또는 디버깅하는 방법에 대한 팁?

답변

1

비 베어 레포의 현재 작업 디렉토리가 .git 디렉토리이기 때문에 밝혀졌습니다. (망할 놈의 메타 데이터 폴더가 REPO 루트와 같은 폴더이기 때문에) 그냥 베어 REPO에서이 작업을 수행 할 수 있지만 그래서

... 비 베어 REPO에서

#!/bin/sh 
git do something 

, 내가 가진 이렇게하려면 ...

#!/bin/sh 
GIT_WORK_TREE=.. git do something 
+0

(여기는 멍청한 녀석, 나는 단지 sourctree). 나는 정확히 같은 코드를 내 포스트 - 수신을 위해 넣었지만 여전히 작동하지 않는다. 프로젝트/.git/hooks 내부에서 오류가있는 동안 git checkout -f를 실행하려고 시도했지만 프로젝트에 내 worling dir을 변경 한 다음 동일한 명령을 실행하여 올바르게 작동했습니다. –