Jestem nowy, więc przepraszam (i popraw mnie), jeśli nadużyję tutaj terminologii, ale zrobię co w mojej mocy.
Próbuję skonfigurować gołe repozytorium git (hub) i kopię roboczą witryny programistycznej (podstawową) na serwerze sieci Web. Próbowałem to wzorować na tym artykule . Chcę, aby kopia robocza deweloperska była aktualizowana za każdym razem, gdy repozytorium centrum jest wypychane. Mam wrażenie, że odpowiedni do tego haczyk to taki post-update
, który stworzyłem tak:
#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET
Aktualizacja
Kiedy wypycham zmiany z mojego lokalnego repozytorium do samego centrum, otrzymuję następujące dane wyjściowe ze skryptu po aktualizacji:
remote: sites
remote: fatal: Not a git repository: '.'
Jeśli jednak zaloguję się do serwera jako „witryny” użytkownika i wykonam ten skrypt ręcznie, to działa świetnie. Jakieś pomysły, co może być nie tak z tym punktem zaczepienia lub skryptem?
GIT_DIR
rozwiązuje problem.GIT_DIR
zamiastPWD
.cd
-ing zmieniaPWD
nieGIT_DIR
. W git musi istnieć rezerwa odGIT_DIR
do,PWD
jeśli pierwszy nie jest dostępny.git pull
?Spróbuj zamiast tego:
źródło
Pomimo tego nieustawionego GIT_DIR po prostu działa.
problem występuje, gdy ustawisz GIT_DIR nieprawidłowo w innym miejscu.
możesz po prostu to dodać: GIT_DIR = .git / To będzie działać
źródło
W moim przypadku określiłem drzewo robocze, które zrywa się w przypadku niektórych poleceń, takich jak
pull
(lub dokładniejfetch
).Aby usunąć drzewo robocze, jeśli jest w konfiguracji git, użyj:
(Istnieją inne sposoby ustawienia drzewa roboczego)
Ważna uwaga,
Nie ma prawie żadnej zmiany w twoim problemie, chyba że sam wykopiesz tę dziurę wokół siebie, używając przede wszystkim niestandardowego drzewa roboczego.
Drażnić:
To sugeruje mi, że
.git/
w niektórych przypadkach wewnętrzne elementy git używają ścieżek względem drzewa roboczego + . Z mojego doświadczenia wynika, że drzewa robocze nie są dobrze obsługiwane, z wyjątkiem najbardziej podstawowych części gita. Nie eksperymentowałem dogłębnie, Git prawdopodobnie zachowałby się, gdybym ustawił dowolną zmienną konfiguracyjną katalogu git, czym nie bawiłem się.źródło
Prawdopodobnie masz problem z uprawnieniami. Nie jestem pewien, jak skonfigurowałeś swoje gołe repozytorium git, ale jeśli działa w ramach konta
git
użytkownika, upewnij się, żegit
użytkownik ma uprawnienia do wykonywaniagit pull
w katalogu twojego projektu.Opcjonalnie spróbuj tego, aby dowiedzieć się, jakim jesteś użytkownikiem, gdy hak jest uruchomiony:
źródło
echo `whoami`
niewhoami
robi?