Administre ganchos de git fácilmente en la configuración de su compositor. Esta herramienta de línea de comandos facilita la implementación de un uso consistente de ganchos de git en todo el proyecto. La especificación de enlaces en el archivo del compositor los hace disponibles para todos los miembros del equipo del proyecto. Esto proporciona un entorno y un comportamiento consistentes para todos, lo cual es fantástico. También es posible utilizarlo para administrar ganchos de git globalmente para cada repositorio en su computadora. De esa manera, tendrá un conjunto confiable de ganchos elaborados por usted mismo para cada proyecto en el que elija trabajar.
Agregue una sección hooks
a la sección extra
de su composer.json
y agregue los ganchos allí.
{
"extra" : {
"hooks" : {
"pre-commit" : [
"echo committing as $(git config user.name)" ,
"php-cs-fixer fix ." // fix style
] ,
// verify commit message. ex: ABC-123: Fix everything
"commit-msg" : "grep -q '[A-Z]+-[0-9]+.*' $1" ,
"pre-push" : [
"php-cs-fixer fix --dry-run ." // check style
"phpunit"
] ,
"post-merge" : "composer install"
"..." : "..."
}
}
}
Luego instale con
composer require --dev brainmaestro/composer-git-hooks
Esto instala el binario cghooks
en su carpeta vendor/bin
. Si esta carpeta no está en su ruta, deberá anteponer cada comando con vendor/bin/
.
Nota: los enlaces declarados en los scripts
o en las secciones raíz de hooks
de composer.json
ya no son compatibles con la versión 3.
También puedes instalarlo globalmente. Esto se siente mucho más natural cuando se usa cghooks
con el soporte recientemente agregado para administrar ganchos de git globales.
composer global require --dev brainmaestro/composer-git-hooks
Todos los comandos tienen soporte global (además de probar los enlaces. Aún requiere estar en el directorio con el archivo composer.json
).
Cuando un enlace es una secuencia de comandos, puede resultar útil detener la ejecución cuando falla un comando.
Especifique los ganchos afectados en la sección de configuración stop-on-failure
.
{
"extra" : {
"hooks" : {
"config" : {
"stop-on-failure" : [ " pre-push " ]
},
"pre-push" : [
" php-cs-fixer fix --dry-run --stop-on-violation . " ,
" phpunit "
],
}
}
}
Asegúrese siempre de ejecutar el comando de actualización después de cambiar la sección de configuración stop-on-failure
.
Se pueden agregar ganchos personalizados a la matriz de custom-hooks
de la sección `config.
{
"extra" : {
"hooks" : {
"config" : {
"custom-hooks" : [ " pre-flow-feature-start " ]
},
"pre-flow-feature-start" : [
" echo 'Starting a new feature...' "
]
}
}
}
Asegúrese siempre de ejecutar el comando de actualización después de cambiar la sección de configuración custom-hooks
. Nota: config
no es un valor de enlace personalizado válido.
Agregue un script cghooks
a la sección scripts
de su archivo composer.json
. De esa manera, los comandos se pueden ejecutar con composer cghooks ${command}
. Esto es ideal si prefiere no editar la ruta de su sistema.
{
"scripts" : {
"cghooks" : " vendor/bin/cghooks " ,
"..." : " ... "
}
}
Agregue los siguientes eventos a su archivo composer.json
. Los comandos cghooks
se ejecutarán cada vez que ocurran los eventos. Vaya a Composer Command Events para obtener más detalles sobre el sistema de eventos de Composer.
{
"scripts" : {
"post-install-cmd" : " cghooks add --ignore-lock " ,
"post-update-cmd" : " cghooks update " ,
"..." : " ... "
}
}
Todos los siguientes comandos deben ejecutarse en la misma carpeta que su archivo composer.json
o especificando la opción --git-dir
para apuntar a una carpeta con un archivo composer.json
.
Una vez completada la instalación, ejecute cghooks add
para agregar todos los ganchos de git válidos que se han especificado en la configuración del compositor.
Opción | Descripción | Dominio |
---|---|---|
no-lock | No crear un archivo de bloqueo | cghooks add --no-lock |
ignore-lock | Agregue el archivo de bloqueo a .gitignore | cghooks add --ignore-lock |
force-win | Forzar compatibilidad con Windows Bash | cghooks add --force-win |
El archivo lock
contiene una lista de todos los ganchos agregados.
Si se usa el indicador --global
, los enlaces se agregarán globalmente y también se modificará la configuración global de git. Si no se proporciona ningún directorio, hay un recurso alternativo al core.hooksPath
actual en la configuración global. Si ese valor no está establecido, el valor predeterminado es $COMPOSER_HOME
(este respaldo específico solo ocurre para el comando add
). Fallará con un error si todavía no hay una ruta después de las alternativas.
El comando de actualización que se ejecuta con cghooks update
básicamente ignora el archivo de bloqueo e intenta agregar enlaces desde el archivo del compositor. Esto es similar a lo que hizo la opción --force
para el comando add
. Este comando es útil si los enlaces en el archivo composer.json
han cambiado desde la primera vez que se agregaron.
Esto funciona de manera similar cuando se usa con --global
excepto que no hay respaldo a $COMPOSER_HOME
si no se proporciona ningún directorio.
Los ganchos se pueden quitar fácilmente con cghooks remove
. Esto eliminará todos los enlaces que se especificaron en la configuración del compositor.
Los ganchos también se pueden eliminar pasándolos como argumentos. El comando cghooks remove pre-commit post-commit
, lo que eliminará los ganchos pre-commit
y post-commit
.
Opción | Descripción | Dominio |
---|---|---|
force | Eliminar ganchos sin verificar el archivo de bloqueo | cghooks remove --force |
CUIDADO : Si se manipuló el archivo de bloqueo o se usó la opción forzar, los enlaces que ya existían antes de usar este paquete, pero que se especificaron en la configuración de los scripts del compositor, también se eliminarán. Es decir, si tenía un enlace pre-commit
, pero su configuración de compositor actual también tiene un enlace pre-commit
, esta opción hará que el comando elimine su enlace inicial.
Esto tampoco tiene un respaldo a $COMPOSER_HOME
si no se proporciona ningún directorio cuando se usa con --global
.
Los ganchos se pueden enumerar con el comando cghooks list-hooks
. Básicamente, esto verifica la configuración del compositor y enumera los enlaces que realmente tienen archivos.
Las siguientes opciones son comunes a todos los comandos.
Opción | Descripción | Dominio |
---|---|---|
git-dir | Ruta al directorio git | cghooks ${command} --git-dir='/path/to/.git' |
lock-dir | Ruta para bloquear el directorio de archivos | cghooks ${command} --lock-dir='/path/to/lock' |
global | Ejecuta el comando especificado globalmente. | cghooks ${command} --global |
Cada comando también tiene un indicador -v
para controlar la detalle de registros más detallados. Actualmente, solo se admite un nivel.
Los ganchos se pueden probar con cghooks ${hook}
antes de agregarlos. Ejemplo cghooks pre-commit
ejecuta el enlace de pre-commit
.
Consulte CONTRIBUCIÓN para obtener más detalles.
La Licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.