Experimentalmente, parece que los ganchos de git se ejecutan con el directorio actual configurado para ser la raíz del repositorio. Sin embargo, no puedo ver ninguna garantía al respecto en la documentación de git. ¿Debo confiar en el directorio de trabajo actual para ubicar el repositorio de git, o hay una mejor manera de resolver el repositorio de git asociado con el gancho?
81

.gitsino que engit reset --hardrealidad crean la estructura del directorio de trabajo dentro del.gitdirectorio, lo cual, en mi opinión, ¡es algo completamente incorrecto!Respuestas:
Se basa en el valor establecido para la variable de entorno
GIT_DIR. Se establece en la raíz del repositorio cuando el gancho comienza a ejecutarse. Muchos ganchos, especialmente aquellos que realizan una extracción desde otro repositorio, desarman (y restablecen) esta variable de entorno según sea necesario.fuente
.git/hooks/post-commit: 1: .git/hooks/post-commit: post-commit_push_gitweb.sh: not foundLas respuestas actuales parecen estar desactualizadas. A partir de 2.9.0, los documentos establecen lo siguiente:
https://git-scm.com/docs/githooks/2.9.0
fuente
.gitdirectorio y sin archivos extraídos).Puede utilizar la variable de entorno
$GIT_DIR.$GIT_DIRapunta al.gitdirectorio.fuente
$GIT_DIR/..apunte a la raíz del repositorio?$GIT_DIR/... Eso se romperá cuando el repositorio sea un repositorio simple. Un repositorio simple no tiene un directorio de trabajo, por lo tanto, no hay "raíz del repositorio". También se romperá cuando .git sea un enlace.