He escrito un gancho post-commit de Git y funciona correctamente. Sin embargo, quiero agregar este enlace para aplicarlo a todos los repositorios git actuales (y futuros) en los que estoy trabajando. Intenté agregar el gancho a mi en ~/.git/hooks/
lugar del directorio de ganchos en el directorio del proyecto, sin embargo, esto no pareció funcionar.
¿Hay alguna forma de crear ganchos Git globales que se apliquen a todos los repositorios en mi sistema (sin tener que copiarlos en cada directorio de proyecto)? Si no, ¿cuál sería la mejor solución en el futuro, tal vez una plantilla git-init?
Respuestas:
Con git 2.9+ (junio de 2016), todo lo que haría es:
Consulte " cambiar los ganchos de git predeterminados ": esto se ha hecho para administrar los ganchos centralizados.
fuente
/.git/hooks/pre_commit
puedo señalarlo?A partir de git 1.7.1, puede configurar init.templatedir en su gitconfig para decirle a git dónde buscar plantillas.
Configúrelo así:
Posteriormente, los nuevos repositorios que cree o clone utilizarán este directorio para las plantillas. Coloque los ganchos que desee
~/.git_template/hooks
. Los repositorios existentes se pueden reinicializar con las plantillas adecuadas ejecutándosegit init
en el mismo directorio.git
en el que se encuentra.Para las versiones de git anteriores a 1.7.1, la ejecución
git init --template ~/.git_template
funcionará si es como yo y aún desea administrar su.git_template
directorio junto con el resto de sus archivos de puntos. También puede usar el$GIT_TEMPLATE_DIR
entorno para sabergit init
dónde está su directorio de plantillas.fuente
git init
en un repositorio existente lo borra, no lo hace , consulte: stackoverflow.com/questions/5149694/…git init
realidad no actualizó los ganchos para mí. Parece que no sobrescribirá los archivos que ya están allí. stackoverflow.com/questions/10791486/ . En su lugar, primero debe eliminar los archivos de enlace antiguos.Si los quiere en todas partes de su sistema (incluidos los usuarios además de usted), puede modificar el contenido del directorio de plantilla instalado: esos están en
$PREFIX/share/git-core/templates/hooks
, dónde$PREFIX
está probablemente/usr/local
o/usr
.Si desea que esto sea solo para usted, entonces sí, lo más simple sería la
--template
opción de git-init. Puede mantener fácilmente un directorio de plantillas personales que tenga enlaces simbólicos a la versión instalada de los valores predeterminados que desea mantener (enlaces individuales, el directorio de información ...) y luego su propio contenidohooks/post-commit
y cualquier otra cosa que desee personalizar.fuente
git init
nuevamente y agregó mi nuevo gancho./Applications/SourceTree.app/Contents/Resources/git_local/share/git-core/templates/hooks
mingw64\share\templates\hooks
(o mingw32 para 32 bits)mingw64\share\git-core\templates\hooks
(gfw 2.25)Un enfoque minimalista es crear un
git_hooks/
directorio en su repositorio para rastrear los ganchos que escribe para ese proyecto, llamarlo la atención de los futuros usuarios al mencionarlo en unREADME
archivo y confiar en ellos para que hagan lo correcto después de que hayan clonado. He reflexionado sobre esto por un tiempo y elegí un enfoque incremental. En el futuro, podría considerar usar una herramienta como git-hooks .fuente