Drop dependency on the trac repo (and hence git plugin).
[git-central.git] / server / post-receive-trac.py
index 074c4ba..a615aa6 100644 (file)
@@ -17,7 +17,12 @@ from trac.util.datefmt import utc
 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
@@ -33,17 +38,13 @@ def qa(ticket):
 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():
@@ -60,9 +61,11 @@ 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)