Mercurial > hg
annotate tests/svnxml.py @ 32737:d6924192c0d5
bookmarks: directly use base dict 'setitem'
The bmstore '__setitem__' method is setting an extra flag that is not needed
during initialization. Skipping the method will allow further cleanup and yield
some speedup as a side effect.
Before:
! wall 0.009120 comb 0.010000 user 0.010000 sys 0.000000 (best of 312)
After:
! wall 0.007874 comb 0.010000 user 0.010000 sys 0.000000 (best of 360)
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 07 Jun 2017 19:13:09 +0100 |
parents | 812eb3b7dc43 |
children | c17d73bf6a4d |
rev | line source |
---|---|
16512
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
1 # Read the output of a "svn log --xml" command on stdin, parse it and |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
2 # print a subset of attributes common to all svn versions tested by |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
3 # hg. |
28947
812eb3b7dc43
py3: use absolute_import in svnxml.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
16512
diff
changeset
|
4 from __future__ import absolute_import |
812eb3b7dc43
py3: use absolute_import in svnxml.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
16512
diff
changeset
|
5 import sys |
812eb3b7dc43
py3: use absolute_import in svnxml.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
16512
diff
changeset
|
6 import xml.dom.minidom |
16512
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
7 |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
8 def xmltext(e): |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
9 return ''.join(c.data for c |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
10 in e.childNodes |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
11 if c.nodeType == c.TEXT_NODE) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
12 |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
13 def parseentry(entry): |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
14 e = {} |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
15 e['revision'] = entry.getAttribute('revision') |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
16 e['author'] = xmltext(entry.getElementsByTagName('author')[0]) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
17 e['msg'] = xmltext(entry.getElementsByTagName('msg')[0]) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
18 e['paths'] = [] |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
19 paths = entry.getElementsByTagName('paths') |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
20 if paths: |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
21 paths = paths[0] |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
22 for p in paths.getElementsByTagName('path'): |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
23 action = p.getAttribute('action') |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
24 path = xmltext(p) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
25 frompath = p.getAttribute('copyfrom-path') |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
26 fromrev = p.getAttribute('copyfrom-rev') |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
27 e['paths'].append((path, action, frompath, fromrev)) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
28 return e |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
29 |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
30 def parselog(data): |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
31 entries = [] |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
32 doc = xml.dom.minidom.parseString(data) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
33 for e in doc.getElementsByTagName('logentry'): |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
34 entries.append(parseentry(e)) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
35 return entries |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
36 |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
37 def printentries(entries): |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
38 fp = sys.stdout |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
39 for e in entries: |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
40 for k in ('revision', 'author', 'msg'): |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
41 fp.write(('%s: %s\n' % (k, e[k])).encode('utf-8')) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
42 for path, action, fpath, frev in sorted(e['paths']): |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
43 frominfo = '' |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
44 if frev: |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
45 frominfo = ' (from %s@%s)' % (fpath, frev) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
46 p = ' %s %s%s\n' % (action, path, frominfo) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
47 fp.write(p.encode('utf-8')) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
48 |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
49 if __name__ == '__main__': |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
50 data = sys.stdin.read() |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
51 entries = parselog(data) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
52 printentries(entries) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
53 |