xmpp svn post-commit hook

Code-Stücke können hier veröffentlicht werden.
Antworten
.D0T
User
Beiträge: 21
Registriert: Donnerstag 17. August 2006, 17:45

Da ich gerne so einfach und schnell wie möglich über Änderungen im svn repository mitbekommen wollte, xmpp (jabber) mag und es python so verdammt einfach macht habe ich mal ein kleines post-commit hook script geschrieben das eine fest eingetragene Liste von usern über jeden commit informiert.

http://d0t.dbclan.de/snippets/jabber_po ... _hook.html

Mir ist klar das es nicht wirklich der Hammer ist aber für mich tut es ;-)

Sieht als message dann beispielsweise so aus:
[21:12:11] <bot@server.tld> Repository '/path/to/repos' now at revision 125 :
Author: d0t
Date: 2007-08-26 21:12:10 +0200 (Sun, 26 Aug 2007)
Changes:
U /path/to/changed/file
Comment:
Did change some reeaaallly important file
MfG
.D0T
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Darf man da auch Kommentare dazu schreiben?

Statt 0 und 1 gibt es in Python auch True und False.. ich weiß, das ist in C nicht so populär, aber seit C99 gibts das mit stdbool.h ja auch ;)

Statt die Message mit Stringverkettung aufzubauen würde ich lieber das Templating mit benannten Feldern verwenden:

Code: Alles auswählen

message  = u"""Repository '%(path)s' now at revision %(rev)d :
Author: %(author)s
Date: %(date)s
Changes:
%(changed)s
Comment:
%(comment)s
"""  % locals()
(``locals()``, für schreibfaule, alternativ kannst du da natürlich auch das Dict selbst konstruieren)
Das hat den Vorteil, dass es einfacher zu lesen, zu bearbeiten ist außerdem ist es schneller, da die Variablen nur einmal eingefüllt werden müssen und der String nur einmal konstruiert wird.

Statt ``os.popen`` würde ich inzwischen lieber ``subprocess.Popen`` nutzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
.D0T
User
Beiträge: 21
Registriert: Donnerstag 17. August 2006, 17:45

Klar kann man dazu auch Kommentare schreiben, ich freu mich über jeden den ich kriegen kann.

True/False kenn ich natürlich, in dem Fall wars wohl eher Schreibfaulheit (aber merkt man so sehr das ich zuerst in C rumgespielt habe?^^).

Das mit dem templating hab ich bisher noch garnicht gekannt, nette Sache. Besonders wenn man es anpassen will.

subprocess.popen anstelle von os.popen muss ich mir mal angucken. Aber auf den ersten Blick scheints nur komplizierter zu benutzen zu sein. Soll man os.popen nicht mehr nutzen oder wie?

MfG
.D0T
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

.D0T hat geschrieben:subprocess.popen anstelle von os.popen muss ich mir mal angucken. Aber auf den ersten Blick scheints nur komplizierter zu benutzen zu sein. Soll man os.popen nicht mehr nutzen oder wie?
Du kannst natürlich ``os.popen()`` immer noch nutzen, jedoch stellt ``subprocess`` jetzt einfach eine Gesamtlösung dar, die die exec*, system und popen*-Funktionen in ein Modul zusammenfasst dar.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten