Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(454)

Side by Side Diff: changes/svnpoller.py

Issue 8835004: Add " (CQ)" to the author name if the commit-queue was used. (Closed) Base URL: http://src.chromium.org/svn/trunk/tools/build/third_party/buildbot_7_12/buildbot/
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # -*- test-case-name: buildbot.test.test_svnpoller -*- 1 # -*- test-case-name: buildbot.test.test_svnpoller -*-
2 2
3 # Based on the work of Dave Peticolas for the P4poll 3 # Based on the work of Dave Peticolas for the P4poll
4 # Changed to svn (using xml.dom.minidom) by Niklaus Giger 4 # Changed to svn (using xml.dom.minidom) by Niklaus Giger
5 # Hacked beyond recognition by Brian Warner 5 # Hacked beyond recognition by Brian Warner
6 6
7 from twisted.python import log 7 from twisted.python import log
8 from twisted.internet import defer, reactor, utils 8 from twisted.internet import defer, reactor, utils
9 from twisted.internet.task import LoopingCall 9 from twisted.internet.task import LoopingCall
10 10
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 (self.svnurl, root)) 310 (self.svnurl, root))
311 self._prefix = self.svnurl[len(root):] 311 self._prefix = self.svnurl[len(root):]
312 if self._prefix.startswith("/"): 312 if self._prefix.startswith("/"):
313 self._prefix = self._prefix[1:] 313 self._prefix = self._prefix[1:]
314 log.msg("SVNPoller: svnurl=%s, root=%s, so prefix=%s" % 314 log.msg("SVNPoller: svnurl=%s, root=%s, so prefix=%s" %
315 (self.svnurl, root, self._prefix)) 315 (self.svnurl, root, self._prefix))
316 return self._prefix 316 return self._prefix
317 317
318 def get_logs(self, ignored_prefix=None): 318 def get_logs(self, ignored_prefix=None):
319 args = [] 319 args = []
320 args.extend(["log", "--xml", "--verbose", "--non-interactive"]) 320 args.extend(["log", "--xml", "--verbose", "--non-interactive",
M-A Ruel 2011/12/07 17:09:42 Please create a class in scripts/master/ overridin
321 "--with-all-revprops"])
321 if self.svnuser: 322 if self.svnuser:
322 args.extend(["--username=%s" % self.svnuser]) 323 args.extend(["--username=%s" % self.svnuser])
323 if self.svnpasswd: 324 if self.svnpasswd:
324 args.extend(["--password=%s" % self.svnpasswd]) 325 args.extend(["--password=%s" % self.svnpasswd])
325 args.extend(["--limit=%d" % (self.histmax), self.svnurl]) 326 args.extend(["--limit=%d" % (self.histmax), self.svnurl])
326 d = self.getProcessOutput(args) 327 d = self.getProcessOutput(args)
327 return d 328 return d
328 329
329 def parse_logs(self, output): 330 def parse_logs(self, output):
330 # parse the XML output, return a list of <logentry> nodes 331 # parse the XML output, return a list of <logentry> nodes
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 relative_path = path[len(self._prefix):] 409 relative_path = path[len(self._prefix):]
409 if relative_path.startswith("/"): 410 if relative_path.startswith("/"):
410 relative_path = relative_path[1:] 411 relative_path = relative_path[1:]
411 where = self.split_file(relative_path) 412 where = self.split_file(relative_path)
412 # 'where' is either None or (branch, final_path) 413 # 'where' is either None or (branch, final_path)
413 return where 414 return where
414 415
415 def create_changes(self, new_logentries): 416 def create_changes(self, new_logentries):
416 changes = [] 417 changes = []
417 418
419 def commit_bot_used(logentry):
420 revprops = logentry.getElementsByTagName('revprops')
421 if revprops is not None:
422 for revprop in revprops.getElementsByTagName('property'):
423 if revprop.getAttribute("name") == "commit-bot":
424 return True
425 return False
426
418 for el in new_logentries: 427 for el in new_logentries:
419 branch_files = [] # get oldest change first 428 branch_files = [] # get oldest change first
420 revision = str(el.getAttribute("revision")) 429 revision = str(el.getAttribute("revision"))
421 430
422 revlink='' 431 revlink=''
423 432
424 if self.revlinktmpl: 433 if self.revlinktmpl:
425 if revision: 434 if revision:
426 revlink = self.revlinktmpl % urllib.quote_plus(revision) 435 revlink = self.revlinktmpl % urllib.quote_plus(revision)
427 436
428 dbgMsg("Adding change revision %s" % (revision,)) 437 dbgMsg("Adding change revision %s" % (revision,))
429 # TODO: the rest of buildbot may not be ready for unicode 'who' 438 # TODO: the rest of buildbot may not be ready for unicode 'who'
430 # values 439 # values
431 author = self._get_text(el, "author") 440 author = self._get_text(el, "author")
432 comments = self._get_text(el, "msg") 441 comments = self._get_text(el, "msg")
442
443 # If commit-bot was used, then add (CQ)
444 if commit_bot_used(el):
445 author += " (CQ)"
M-A Ruel 2011/12/07 17:09:42 You can't, as this is used to create the blamelist
446
433 # there is a "date" field, but it provides localtime in the 447 # there is a "date" field, but it provides localtime in the
434 # repository's timezone, whereas we care about buildmaster's 448 # repository's timezone, whereas we care about buildmaster's
435 # localtime (since this will get used to position the boxes on 449 # localtime (since this will get used to position the boxes on
436 # the Waterfall display, etc). So ignore the date field and use 450 # the Waterfall display, etc). So ignore the date field and use
437 # our local clock instead. 451 # our local clock instead.
438 #when = self._get_text(el, "date") 452 #when = self._get_text(el, "date")
439 #when = time.mktime(time.strptime("%.19s" % when, 453 #when = time.mktime(time.strptime("%.19s" % when,
440 # "%Y-%m-%dT%H:%M:%S")) 454 # "%Y-%m-%dT%H:%M:%S"))
441 branches = {} 455 branches = {}
442 pathlist = el.getElementsByTagName("paths")[0] 456 pathlist = el.getElementsByTagName("paths")[0]
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 assert self.working 506 assert self.working
493 self.working = False 507 self.working = False
494 return res 508 return res
495 509
496 def finished_failure(self, f): 510 def finished_failure(self, f):
497 log.msg("SVNPoller failed") 511 log.msg("SVNPoller failed")
498 dbgMsg('_finished : %s' % f) 512 dbgMsg('_finished : %s' % f)
499 assert self.working 513 assert self.working
500 self.working = False 514 self.working = False
501 return None # eat the failure 515 return None # eat the failure
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698