receive made hooks easy digitalocean create automatically git githooks

made - Escribiendo ganchos Git en scripts python/bash



npm pre-commit (3)

Recientemente he necesitado escribir git hooks, para todos los compromisos de referencia de un ticket en particular.

Esperaba un lugar para empezar a aprender. Todas las cosas en el libro pro git están escritas en Ruby. Dado que Ruby no es mi fuerte, ¿alguien puede compartir tutoriales sobre ganchos Git escritos en otros idiomas? (Preferiría particularmente los scripts de Python o Bash).


Descubrí que es fácil escribir git hook en python. Es un ejemplo de gancho posterior a la recepción en python. El ejemplo proporcionado despliega el maestro y desarrolla sucursales en diferentes carpetas (los cambios en el maestro se enviarán al sitio web de producción y los cambios en el desarrollo de la sucursal se enviarán al sitio qa)

#!/usr/bin/env python # -*- coding: UTF-8 -*- #post-receive import sys import subprocess # 1. Read STDIN (Format: "from_commit to_commit branch_name") (old, new, branch) = sys.stdin.read().split() # 2. Only deploy if master branch was pushed if branch == ''refs/heads/master'': subprocess.call(''date >> ~/prod-deployment.log'', shell=True) subprocess.call(''GIT_WORK_TREE=/home/ft/app.prod git checkout master -f'', shell=True) subprocess.call(''cd ../../app.prod;bower update'', shell=True) #3. Only deploy if develop branch was pushed if branch == ''refs/heads/develop'': subprocess.call(''date >> ~/dev-deployment.log'', shell=True) subprocess.call(''GIT_WORK_TREE=/home/ft/app.dev git checkout develop -f'', shell=True) subprocess.call(''cd ../../app.dev;bower update'', shell=True)


Here hay un ejemplo del uso de Python para un gancho. En general los ganchos son del lenguaje agnóstico. Usted usa el script para realizar algún trabajo o para salir con un código de retorno 0 / other para alterar el flujo de un proceso de git.


Los ejemplos que vienen con git están escritos en shell script; Hay algunos básicos en .git/hooks de cada repositorio y más avanzados instalados en /usr/share/doc/git-core/contrib/hooks .

También hay más información sobre los diversos ganchos disponibles a través de $ man githooks .