Puede usar un gancho post-checkout
para actualizar una base de datos o un archivo en su servidor. Este gancho se ejecuta en el lado del cliente (es decir, la persona que hace el clon ejecutará el guión), por lo que debe diseñar el guión desde esa perspectiva. Además, es posible clonar el repositorio sin ejecutar este enganche agregando la opción --no-checkout
al git clone
.
Un enfoque simple y confiable sería tener el servidor ejecutando un pequeño servicio web RESTful que su gancho puede llamar con curl
o alguna instalación similar. Por ejemplo:
#!/usr/bin/env python
import socket, sys, urllib, pycurl
service_url = "https://my.server.dns/service.php"
data = urllib.urlencode({
'prev': sys.argv[1],
'new': sys.argv[2],
'branch': sys.argv[3],
'host': socket.gethostname()
})
c = pycurl.Curl()
c.setopt(pycurl.URL, service_url)
c.setopt(pycurl.POSTFIELDS, data)
c.perform()
Ver http://www.kernel.org/pub/software/scm/git/docs/githooks.html.