logging.basicConfig(level=logging.INFO) log = logging.getLogger('startreview') # connect to Trac instance TRAC_CONF = json.load(open(os.path.expanduser('~/.trac'))) trac = Trac(**TRAC_CONF) # parse out ticket IDs and commit IDs commits = git.log_to_commits(sys.stdin, trac.match_ticket_url) # iterate over tickets mentioned in commits for commit in commits: for ticket in commit['tickets']: # get ticket attributes attrs = trac.get_ticket_attrs(ticket) log.info("Processing ticket %s: %s" % (ticket, attrs['summary'])) log.debug("Ticket " + str(ticket) + " attributes: " + pformat(attrs)) # prepare changes in Trac trac_changes = {'id': ticket, 'comment': '', 'attributes': {}} reviewer = attrs.get('reviewer', '') if reviewer: log.warn('Reviewer is already set to "%s"' % reviewer) continue if trac.username not in reviewer: trac_changes['attributes']['reviewer'] = trac.username if attrs['status'] == 'assigned': trac_changes['attributes']['status'] = 'onreview' else: log.warn('Ticket ' + str(ticket) + ' is not "assigned" but ' + attrs['status'])