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
.git
sino que engit reset --hard
realidad crean la estructura del directorio de trabajo dentro del.git
directorio, 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 found
Las 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
.git
directorio y sin archivos extraídos).Puede utilizar la variable de entorno
$GIT_DIR
.$GIT_DIR
apunta al.git
directorio.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.