Programing

업데이트 후 후크를 사용하여 다른 저장소에서 'git pull'을 실행할 때 "치명적 : git 저장소가 아님 : '.'"발생

crosscheck 2020. 9. 21. 07:13
반응형

업데이트 후 후크를 사용하여 다른 저장소에서 'git pull'을 실행할 때 "치명적 : git 저장소가 아님 : '.'"발생


나는 git을 처음 사용하기 때문에 여기에서 용어를 오용하면 사과하고 수정하십시오.하지만 최선을 다할 것입니다.

웹 서버에 베어 git 저장소 (허브)와 개발 사이트 작업 복사본 (프라임)을 설정하려고합니다. 나는 이 기사 이후에 그것을 패턴 화하려고 시도했다 . 허브 저장소가 푸시 될 때마다 개발 작업 사본이 업데이트되기를 원합니다. 나는 이것에 대한 적절한 후크가라는 인상을 받고 있습니다 post-update.

#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET

최신 정보

로컬 리포지토리에서 베어 허브로 변경 사항을 푸시하면 업데이트 후 스크립트에서 다음 출력이 표시됩니다.

remote: sites
remote: fatal: Not a git repository: '.'

그러나 사용자 '사이트'로 서버에 SSH를 사용하고이 스크립트를 수동으로 실행하면 훌륭하게 작동합니다.이 후크 또는 스크립트에 어떤 문제가 발생할 수 있는지에 대한 아이디어가 있습니까?


다음은 궁극적으로 작동 한 스크립트입니다. 원격으로 작동하지 못했던 원래 누락 된 부분은unset GIT_DIR

#!/bin/sh
cd /path/to/working-copy/ || exit
unset GIT_DIR
git pull repo branch

exec git-update-server-info

대신 시도하십시오.

#!/bin/sh
cd /path/to/working-copy/
env -i git pull

설정되지 않은 GIT_DIR에도 불구하고 작동합니다.

GIT_DIR을 다른 곳에서 잘못 설정하면 문제가 발생합니다.

대신 추가 할 수 있습니다. GIT_DIR = .git / 작동합니다.


제 경우에는 작업 트리를 지정했으며 이것은 pull(또는 더 정확하게 fetch) 와 같은 일부 명령에서 중단됩니다 .

git 구성에있는 경우 작업 트리를 설정 해제하려면 다음을 사용하십시오.

git config --unset core.worktree

(작업 트리를 설정하는 다른 방법이 있습니다)

주목할 점은

처음에 사용자 정의 작업 트리를 사용하여이 구멍을 직접 파지 않는 한 이것이 문제가되는 변화는 거의 없습니다.

농담:

이것은 git 내부 .git/가 어떤 경우에는 작업 트리 + 상대적인 경로를 사용한다는 것을 의미합니다 . 내 경험상 작업 트리는 git의 가장 기본적인 부분을 제외하고는 잘 지원되지 않습니다. 나는 철저히 실험하지 않았고, 내가 가지고 놀지 않은 git 디렉토리 구성 변수가 적절하게 설정되면 Git이 작동 할 것입니다.


권한 문제가있을 수 있습니다. 베어 git 리포지토리를 어떻게 설정했는지 잘 모르겠지만 git사용자 아래에서 실행중인 경우 git사용자가 git pull프로젝트 디렉토리에서 수행 할 수 있는지 확인하십시오 .

선택적으로 후크가 실행될 때 어떤 사용자인지 확인하려면 이것을 시도하십시오.

echo `whoami`

참고 URL : https://stackoverflow.com/questions/4043609/getting-fatal-not-a-git-repository-when-using-post-update-hook-to-execut

반응형