업데이트 후 후크를 사용하여 다른 저장소에서 '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`
'Programing' 카테고리의 다른 글
새 Mac OS X 터미널 창에서 명령 실행 (0) | 2020.09.21 |
---|---|
JavaScript를 사용하여 URL 유효성 검사 시도 (0) | 2020.09.21 |
https 웹 서버용 .pem 파일을 만드는 방법 (0) | 2020.09.21 |
IPython Notebook에서 출력을 어떻게 억제합니까? (0) | 2020.09.21 |
GSON을 사용하는 Json의 Kotlin 데이터 클래스 (0) | 2020.09.21 |