10 Stimmen

Git-Repository-Klonen Protokollierung

Ich möchte die Klon-Aktivitäten in meinem Git-Repository überwachen, kann aber nichts finden, das zeigt, wie man dies einrichtet oder wie man diese Informationen abruft.

Ist das überhaupt möglich? Wenn ja, wie kann dies eingerichtet werden und wie können Sie die Protokollinformationen abrufen?

2voto

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 .

1voto

estani Punkte 20703

Ich wollte dieselbe Frage stellen, aber ich habe das hier herausgefunden. Das Beste, was ich finden konnte, ist das Einwickeln der git-upload-pack um den Anruf zu protokollieren. Dies funktioniert allerdings nur über ssh, siehe: Pre-Fetch-Hook-Funktionalität in Git

Aber nur Root ist dazu in der Lage. Es funktioniert nicht für mich, aber vielleicht ist es eine Lösung für andere.

Sie können immer einen "Git-Server" für die Zugriffskontrolle installieren, z. B. gitolite ( http://sitaramc.github.com/gitolite/master-toc.html ). Sie können es entweder direkt protokollieren oder seine Funktionalität erweitern.

0voto

abresas Punkte 837

Ich glaube nicht, dass es einen Hook oder etwas ähnliches gibt, der auf der Serverseite des Repositorys auf einem Klon läuft. git verwendet wahrscheinlich einfach das angegebene Protokoll (ssh, http,...) und holt die entsprechenden Dateien ab. Sie könnten versuchen, diese Aktivität irgendwie zu überwachen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X