diff options
Diffstat (limited to 'buildbot/buildbot-source/contrib/viewcvspoll.py')
-rwxr-xr-x | buildbot/buildbot-source/contrib/viewcvspoll.py | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/buildbot/buildbot-source/contrib/viewcvspoll.py b/buildbot/buildbot-source/contrib/viewcvspoll.py deleted file mode 100755 index 3b2436a7a..000000000 --- a/buildbot/buildbot-source/contrib/viewcvspoll.py +++ /dev/null @@ -1,85 +0,0 @@ -#! /usr/bin/python - -"""Based on the fakechanges.py contrib script""" - -import sys -from twisted.spread import pb -from twisted.cred import credentials -from twisted.internet import reactor, task -from twisted.python import log -import commands, random, os.path, time, MySQLdb - -class ViewCvsPoller: - - def __init__(self): - def _load_rc(): - import user - ret = {} - for line in open(os.path.join(user.home,".cvsblamerc")).readlines(): - if line.find("=") != -1: - key, val = line.split("=") - ret[key.strip()] = val.strip() - return ret - # maybe add your own keys here db=xxx, user=xxx, passwd=xxx - self.cvsdb = MySQLdb.connect("cvs", **_load_rc()) - #self.last_checkin = "2005-05-11" # for testing - self.last_checkin = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) - - def get_changes(self): - changes = [] - - def empty_change(): - return {'who': None, 'files': [], 'comments': None } - change = empty_change() - - cursor = self.cvsdb.cursor() - cursor.execute("""SELECT whoid, descid, fileid, dirid, branchid, ci_when - FROM checkins WHERE ci_when>='%s'""" % self.last_checkin) - last_checkin = None - for whoid, descid, fileid, dirid, branchid, ci_when in cursor.fetchall(): - if branchid != 1: # only head - continue - cursor.execute("""SELECT who from people where id=%s""" % whoid) - who = cursor.fetchone()[0] - cursor.execute("""SELECT description from descs where id=%s""" % descid) - desc = cursor.fetchone()[0] - cursor.execute("""SELECT file from files where id=%s""" % fileid) - filename = cursor.fetchone()[0] - cursor.execute("""SELECT dir from dirs where id=%s""" % dirid) - dirname = cursor.fetchone()[0] - if who == change["who"] and desc == change["comments"]: - change["files"].append( "%s/%s" % (dirname, filename) ) - elif change["who"]: - changes.append(change) - change = empty_change() - else: - change["who"] = who - change["files"].append( "%s/%s" % (dirname, filename) ) - change["comments"] = desc - if last_checkin == None or ci_when > last_checkin: - last_checkin = ci_when - if last_checkin: - self.last_checkin = last_checkin - return changes - -poller = ViewCvsPoller() - -def error(*args): - log.err() - reactor.stop() - -def poll_changes(remote): - print "GET CHANGES SINCE", poller.last_checkin, - changes = poller.get_changes() - for change in changes: - print change["who"], "\n *", "\n * ".join(change["files"]) - remote.callRemote('addChange', change).addErrback(error) - print - reactor.callLater(60, poll_changes, remote) - -factory = pb.PBClientFactory() -reactor.connectTCP("localhost", 9999, factory ) -deferred = factory.login(credentials.UsernamePassword("change", "changepw")) -deferred.addCallback(poll_changes).addErrback(error) - -reactor.run() |