Sie können einen post-checkout
Hook verwenden, um eine Datenbank oder Datei auf Ihrem Server zu aktualisieren. Dieser Hook wird auf der Clientseite ausgeführt (dh die Person, die den Klon ausführt, führt das Skript aus). Aus diesem Grund müssen Sie Ihr Skript entwerfen. Es ist auch möglich, das Repository zu klonen, ohne diesen Hook auszuführen, indem Sie die Option --no-checkout
zu git clone
hinzufügen.
Ein einfacher und zuverlässiger Ansatz wäre, wenn der Server einen kleinen RESTful-Webdienst ausführt, den Ihr Hook mit curl
oder einer ähnlichen Einrichtung aufrufen kann. Zum Beispiel:
#!/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()
Siehe http://www.kernel.org/pub/software/scm/git/docs/githooks.html.