Eksperymentalnie wydaje się, że haki git są uruchamiane z bieżącym katalogiem ustawionym jako katalog główny repozytorium. Jednak nie widzę żadnej gwarancji na to w dokumentacji gita. Czy powinienem polegać na bieżącym katalogu roboczym, aby zlokalizować repozytorium git, czy jest lepszy sposób na rozwiązanie repozytorium git skojarzonego z punktem zaczepienia?
81
.git
ale wgit reset --hard
rzeczywistości tworzą roboczą strukturę katalogów wewnątrz.git
katalogu, co moim zdaniem jest całkowicie niewłaściwe!Odpowiedzi:
Opiera się na wartości ustawionej dla zmiennej środowiskowej
GIT_DIR
. Jest ustawiany na katalog główny repozytorium, gdy hak zaczyna działać. Wiele punktów zaczepienia, szczególnie tych wykonujących ściąganie z innego repozytorium, w razie potrzeby wyłącza (i resetuje) tę zmienną środowiskową.źródło
.git/hooks/post-commit: 1: .git/hooks/post-commit: post-commit_push_gitweb.sh: not found
Obecne odpowiedzi wydają się być nieaktualne. Od wersji 2.9.0 dokumenty zawierają następujące informacje:
https://git-scm.com/docs/githooks/2.9.0
źródło
.git
katalogu i bez wyewidencjonowanych plików.)Możesz użyć zmiennej środowiskowej
$GIT_DIR
.$GIT_DIR
wskazuje.git
katalog.źródło
$GIT_DIR/..
wskaże katalog główny repozytorium?$GIT_DIR/..
. To się zepsuje, gdy repozytorium będzie gołym repozytorium. Czyste repozytorium nie ma katalogu roboczego, dlatego nie ma „katalogu głównego repozytorium”. Zepsuje się również, gdy .git jest łączem.