Modified: subversion/branches/tree-read-api/tools/server-side/svnpubsub/svnpubsub/client.py URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/tools/server-side/svnpubsub/svnpubsub/client.py?rev=1429457&r1=1429456&r2=1429457&view=diff ============================================================================== --- subversion/branches/tree-read-api/tools/server-side/svnpubsub/svnpubsub/client.py (original) +++ subversion/branches/tree-read-api/tools/server-side/svnpubsub/svnpubsub/client.py Sun Jan 6 02:33:34 2013 @@ -119,10 +119,15 @@ class XMLStreamHandler(xml.sax.handler.C self.rev = None self.chars = '' + self.parent = None + self.attrs = [ ] def startElement(self, name, attrs): + self.attrs = attrs if name == 'commit': self.rev = Revision(attrs['repository'], int(attrs['revision'])) + elif name == "dirs_changed" or name == "changed": + self.parent = name # No other elements to worry about. def characters(self, data): @@ -134,10 +139,15 @@ class XMLStreamHandler(xml.sax.handler.C self.rev = None elif name == 'stillalive': self.event_callback('ping') + elif name == self.parent: + self.parent = None elif self.chars and self.rev: value = self.chars.strip() - if name == 'path': + if self.parent == 'dirs_changed' and name == 'path': self.rev.dirs_changed.append(value.decode('unicode_escape')) + elif self.parent == 'changed' and name == 'path': + path = value.decode('unicode_escape') + self.rev.changed[path] = dict(p for p in self.attrs.items()) elif name == 'author': self.rev.author = value.decode('unicode_escape') elif name == 'date': @@ -147,6 +157,8 @@ class XMLStreamHandler(xml.sax.handler.C # Toss out any accumulated characters for this element. self.chars = '' + # Toss out the saved attributes for this element. + self.attrs = [ ] class Revision(object): @@ -154,6 +166,7 @@ class Revision(object): self.uuid = uuid self.rev = rev self.dirs_changed = [ ] + self.changed = { } self.author = None self.date = None self.log = None
Modified: subversion/branches/tree-read-api/tools/server-side/svnpubsub/svnpubsub/server.py URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/tools/server-side/svnpubsub/svnpubsub/server.py?rev=1429457&r1=1429456&r2=1429457&view=diff ============================================================================== --- subversion/branches/tree-read-api/tools/server-side/svnpubsub/svnpubsub/server.py (original) +++ subversion/branches/tree-read-api/tools/server-side/svnpubsub/svnpubsub/server.py Sun Jan 6 02:33:34 2013 @@ -78,7 +78,8 @@ class Revision: # thus creating invalid XML, so the XML code paths do escaping. self.rev = r.get('revision') self.repos = r.get('repos') - self.dirs_changed = [x for x in r.get('dirs_changed')] + self.dirs_changed = r.get('dirs_changed') + self.changed = r.get('changed') self.author = r.get('author') self.log = r.get('log') self.date = r.get('date') @@ -88,6 +89,7 @@ class Revision: return json.dumps({'commit': {'repository': self.repos, 'revision': self.rev, 'dirs_changed': self.dirs_changed, + 'changed': self.changed, 'author': self.author, 'log': self.log, 'date': self.date}}) +"," @@ -100,6 +102,11 @@ class Revision: for p in self.dirs_changed: x = ET.SubElement(d, 'path') x.text = p.encode('unicode_escape') + ch = ET.SubElement(c, 'changed') + for chp in self.changed.keys(): + x = ET.SubElement(ch, 'path', self.changed[chp]) + x.text = chp.encode('unicode_escape') + str = ET.tostring(c, 'UTF-8') + "\n" return str[39:] else: Propchange: subversion/branches/tree-read-api/tools/server-side/svnpubsub/svntweet.py ------------------------------------------------------------------------------ svn:executable = *
