Jest to bardzo dziwne, ale podczas konfigurowania repozytorium git i tworzenia haka po otrzymaniu za pomocą:
echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"
hak rzeczywiście działa, ale nigdy nie udaje mu się poprawnie uruchomić git pull:
6bfa32c..71c3d2a master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--
więc zadaję sobie teraz pytanie, jak to możliwe, aby hak zaktualizował klon po otrzymaniu?
w tym przypadku użytkownik uruchamiający procesy jest taki sam, a wszystko jest w folderze użytkownika, więc naprawdę nie rozumiem ... ponieważ jeśli przejdę ręcznie do
cd ~/websites/testing
git pull
działa bez problemu ...
każda pomoc w tym zakresie byłaby bardzo mile widziana
Wielkie dzięki
Jedną z rzeczy, których doświadczyłem, było to, że użycie
post-update
haka „--git-dir” działało świetnie, ale git wciąż narzekał na brakujące działające drzewo (pomimo użycia „--work-tree”)Krótko mówiąc, to nie działało:
git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull
mając na uwadze, że zadziałało:
cd /path/to/websites/testing
git --git-dir /path/to/websites/testing/.git pull
źródło
Czy to nie działa?
Edytowane
Jeszcze lepiej
źródło
Czy próbowałeś z pełną ścieżką zamiast ~?
źródło
Skrypt jest prawdopodobnie wywoływany
/bin/sh
, co nie rozumie~
.~
Zamiast tego wypróbuj pełną ścieżkę .źródło
Pierwsza zalecana odpowiedź jest prawidłowa - gdy uruchomiony jest hak, GIT_DIR itp. Są ustawione. Jeśli jednak chcesz mieć możliwość korzystania ze skryptu w innym repozytorium, ta metoda ma wadę, ponieważ kodowanie twarde resetuje GIT_DIR. Jak sugerowali, innym sposobem jest usunięcie zmiennej za pomocą env w następujący sposób: env -i git reset - twarde Oczywiście to, jakie polecenie tam uruchomisz, zależy od Ciebie - to tylko bit „env -i” jest najważniejszy .
źródło