from trac.versioncontrol.api import NoSuchChangeset
project = sys.argv[1]
-rev = sys.argv[2]
+refname = sys.argv[2]
+describe = sys.argv[3]
+describe_tags = sys.argv[4]
+rev = sys.argv[5]
+author = sys.argv[6]
+message = sys.argv[7]
def refs(ticket):
pass
commands = { 're': refs, 'refs': refs, 'qa': qa }
commandPattern = re.compile(r'(?P<action>[A-Za-z]*).?(?P<ticket>#[0-9]+(?:(?:[, &]*|[ ]?and[ ]?)#[0-9]+)*)')
ticketPattern = re.compile(r'#([0-9]*)')
+authorPattern = re.compile(r'<(.+)@')
tickets = {}
env = open_environment(project)
-repos = env.get_repository()
-repos.sync()
-
-changeset = repos.get_changeset(rev)
-
-for command, tickets in commandPattern.findall(changeset.message):
+for command, ticketList in commandPattern.findall(message):
if commands.has_key(command.lower()):
- for ticketId in ticketPattern.findall(tickets):
+ for ticketId in ticketPattern.findall(ticketList):
tickets.setdefault(ticketId, []).append(commands[command.lower()])
for ticketId, commands in tickets.iteritems():
if change['permanent']:
cnum += 1
+ username = authorPattern.findall(author)[0]
now = datetime.now(utc)
- message = "(In [%s]) %s" % (rev, changeset.message)
- ticket.save_changes(changeset.author, message, now, db, cnum+1)
+ message = "(On %s [changeset:%s %s]) %s" % (refname, rev, describe_tags, message)
+ ticket['branch'] = refname
+ ticket.save_changes(username, message, now, db, cnum+1)
db.commit()
tn = TicketNotifyEmail(env)