Sie können eine post-checkout
um eine Datenbank oder Datei auf Ihrem Server zu aktualisieren. Dieser Hook wird auf der Client-Seite ausgeführt (d.h. die Person, die den Klon durchführt, führt das Skript aus), so dass Sie Ihr Skript aus dieser Perspektive entwerfen müssen. Es ist auch möglich, das Projektarchiv zu klonen, ohne diesen Hook auszuführen, indem Sie den --no-checkout
Option zu git clone
.
Ein einfacher und zuverlässiger Ansatz wäre es, auf dem Server einen kleinen RESTful-Webdienst laufen zu lassen, den Ihr Hook mit curl
oder eine ähnliche Einrichtung. 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()
見る http://www.kernel.org/pub/software/scm/git/docs/githooks.html .