diff options
Diffstat (limited to 'tests/svnxml.py')
-rw-r--r-- | tests/svnxml.py | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/tests/svnxml.py b/tests/svnxml.py deleted file mode 100644 index b3b2b63..0000000 --- a/tests/svnxml.py +++ /dev/null @@ -1,51 +0,0 @@ -# Read the output of a "svn log --xml" command on stdin, parse it and -# print a subset of attributes common to all svn versions tested by -# hg. -import xml.dom.minidom, sys - -def xmltext(e): - return ''.join(c.data for c - in e.childNodes - if c.nodeType == c.TEXT_NODE) - -def parseentry(entry): - e = {} - e['revision'] = entry.getAttribute('revision') - e['author'] = xmltext(entry.getElementsByTagName('author')[0]) - e['msg'] = xmltext(entry.getElementsByTagName('msg')[0]) - e['paths'] = [] - paths = entry.getElementsByTagName('paths') - if paths: - paths = paths[0] - for p in paths.getElementsByTagName('path'): - action = p.getAttribute('action') - path = xmltext(p) - frompath = p.getAttribute('copyfrom-path') - fromrev = p.getAttribute('copyfrom-rev') - e['paths'].append((path, action, frompath, fromrev)) - return e - -def parselog(data): - entries = [] - doc = xml.dom.minidom.parseString(data) - for e in doc.getElementsByTagName('logentry'): - entries.append(parseentry(e)) - return entries - -def printentries(entries): - fp = sys.stdout - for e in entries: - for k in ('revision', 'author', 'msg'): - fp.write(('%s: %s\n' % (k, e[k])).encode('utf-8')) - for path, action, fpath, frev in sorted(e['paths']): - frominfo = '' - if frev: - frominfo = ' (from %s@%s)' % (fpath, frev) - p = ' %s %s%s\n' % (action, path, frominfo) - fp.write(p.encode('utf-8')) - -if __name__ == '__main__': - data = sys.stdin.read() - entries = parselog(data) - printentries(entries) - |