Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:gitbot

GitBot

Gitbot is the new version of ircnotify and only for git repositorys. Gitbot monitors git repositorys changes and post it to the irc-network. A english description is in the source-code of the files.

Now easy available @ https://github.com/PatrickBeck/gitbot

GitBot, ist die Neufassung von ircnotify und ausschließlich für Git Repositorys. Gitbot überwacht Git-Repositories und Branches und postet diese ins IRC. Aufgebaut ist es wie IRCNotify auf zwei Skripten: gitcheck.py und gitbot.py. gitcheck.py bereitet die Informationen vor und gibt sie als Liste zurück. gitbot.py verwertet diese und postet sie ins IRC - optional auch in mehr als einen Channel eines Netzwerks.

Wenn gitcheck.py direkt gestartet wird, gibt es die aktuellen Änderungen direkt auf der Konsole aus.

Unterschiede V1.0 zu V1.1 und später

Seit Version 1.1 ist GitBot ein vollwertiger Bot der im Channel verbleibt. Zusätzlich wurde er um ein Lernsystem erweitert - Wörter mit Beschreibung speichern, updaten, löschen. Dazu noch ein kleiner Hilfstext und eine Übersicht über alle Wörter ausgeben.

  Example for learning: !pyneo is a mobile framework, Example 
  for read: ?pyneo, Example with username: ?pyneo PBeck - 
  !facts gives a overview.
                  

V1.0 funktioniert weiterhin und war bisher auch ohne Probleme im Einsatz.

Anwendung

Normale Anwendung ist gitbot.py direkt auszuführen. Nach dem hinzufügen der Repositories (jeweils URL + Branch) in gitbot.py am Ende der Datei, sowie der notwendigen Parameter fürs IRC: botname, channels, network und port, kann gitbot.py direkt gestartet werden.

Ausschnitt aus gitbot.py mit möglichen Angaben.

  botname = 'pyneo-bot'
  channels = ['#pyneo.org'] # you can add as much channels as you like => channels = ['channel1','channel2','channel3']
  network = 'chat.freenode.net'
  port = 6667
  
  repolist = [ # a list with all controlled repositorys
  ['http://git.gitorious.org/epydial/epydial.git','master'],
  ['http://git.gitorious.org/epydial/epydial.git','pyneo-1.32'],
  ['http://git.gitorious.org/epydial/epydial-new.git','master'],
  ['http://git.pyneo.org/browse/cgit/paroli','master'],
  ['http://git.pyneo.org/browse/cgit/pyneo','master'],
  ['http://git.pyneo.org/browse/cgit/pyneo-zadosk','master'],
  ['http://git.pyneo.org/browse/cgit/pyneo-zadwm','master'],
  ]   

Beim ausführen werden automatisch alle Repositories geclont (wenn notwendig). Per git-fetch wird origin remote aktuell gehalten. Anschließend wird die Datei repos.csv erstellt oder falls schon vorhanden ausgelesen. Danach wird die Git History für alle Repos ausgelesen und mit den Einträgen in der Datei repos.csv verglichen. Bei Neuerstellung wird der derzeitige Stand als aktuell angenommen. Danach wird geprüft ob sich Änderungen ergeben haben. Wenn dies zutrifft wird eine Liste mit folgendem Inhalt generiert. Hier als Beispiel die komplette IRC-Meldung.

  16:15:04 < pyneo-bot> [epydial-new / master] F. Gau at Sat Jan 1 16:01:41 2011 on 3063127f2a... [add lock icon on main screen]

Diese wird dann vom Bot entgegen genommen und er verbindet sich darauf hin mit dem IRC-Server und joint die Channels. Mit einer 2 Sek. Pause wird dann jeder Log-Eintrag einzeln gepostet.

Cronjob-Eintrag

Beispieleintrag:

*/5 * * * * /home/user/gitbot/runtest.sh

Die Pfadangabe muss natürlich angepasst werden.

runtest.sh ist ein Skript das nach dem Auruf überprüft ob der GitBot noch läuft, wenn nicht wird er wieder gestartet. Die Pfadangabe für das Starten muss in der runtest.sh Datei angepasst werden.

Datei

Achtung alte Dateien | Attention old Files | look at github

* gitbot_v1.2.3.tar.gz - Als Background-Prozess

* gitbotv1.0.1.tar.gz - Nur Skript-Version

python/gitbot.txt · Zuletzt geändert: 2014/03/16 18:08 (Externe Bearbeitung)