Mercurial > hgsubversion
view tests/fixtures/externals.svndump @ 889:7a98fbadcae9
revsets: huge speedups for fromsvn and svnrev
I have a hgsubversion repo that contains over 300,000 commits.
In that repo, this patch improves performance as follows:
hg --time log -r 'first(fromsvn())'
Before: 40.3 sec
After: 0.8 sec
hg --time log -r 'svnrev(350000)'
Before: 40.3 sec
After: 0.1 sec
Note: the performance of these revset implementations is very sensitive
to doing as little work as possible per line of the rev_map file.
I originally attempted to hide the file format details by hoisting the
parsing of each line up into RevMap.readmapfile, but the current less
abstract code is dramatically (10x or more) faster.
If the revmap file is missing, we error out and print a message
describing what to do.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Sat, 12 May 2012 05:38:34 -0700 |
parents | a5be5ca638de |
children |
line wrap: on
line source
SVN-fs-dump-format-version: 2 UUID: 2fcff1c7-6cef-40bf-9072-468ceec83032 Revision-number: 0 Prop-content-length: 56 Content-length: 56 K 8 svn:date V 27 2011-02-25T14:33:01.299441Z PROPS-END Revision-number: 1 Prop-content-length: 114 Content-length: 114 K 7 svn:log V 12 init project K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:01.321997Z PROPS-END Node-path: branches Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: externals Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: trunk Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Revision-number: 2 Prop-content-length: 130 Content-length: 130 K 7 svn:log V 28 configure externals projects K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:02.082464Z PROPS-END Node-path: externals/project1 Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: externals/project1/a Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 2 Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3 Text-content-sha1: 3f786850e387550fdab836ed7e6dc881de23001b Content-length: 12 PROPS-END a Node-path: externals/project2 Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: externals/project2/b Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 2 Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3 Text-content-sha1: 3f786850e387550fdab836ed7e6dc881de23001b Content-length: 12 PROPS-END a Revision-number: 3 Prop-content-length: 120 Content-length: 120 K 7 svn:log V 18 set externals on . K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:03.076026Z PROPS-END Node-path: trunk Node-kind: dir Node-action: change Prop-content-length: 70 Content-length: 70 K 13 svn:externals V 35 ^/externals/project1 deps/project1 PROPS-END Node-path: trunk/a Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 2 Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3 Text-content-sha1: 3f786850e387550fdab836ed7e6dc881de23001b Content-length: 12 PROPS-END a Revision-number: 4 Prop-content-length: 123 Content-length: 123 K 7 svn:log V 21 update externals on . K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:04.058124Z PROPS-END Node-path: trunk Node-kind: dir Node-action: change Prop-content-length: 169 Content-length: 169 K 13 svn:externals V 133 # A comment, then an empty line, then a blank line ^/externals/project1 deps/project1 -r2 ^/externals/project2@2 deps/project2 PROPS-END Revision-number: 5 Prop-content-length: 115 Content-length: 115 K 7 svn:log V 13 add on subdir K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:05.096545Z PROPS-END Node-path: trunk Node-kind: dir Node-action: change Prop-content-length: 76 Content-length: 76 K 13 svn:externals V 41 -r2 ^/externals/project2@2 deps/project2 PROPS-END Node-path: trunk/subdir Node-kind: dir Node-action: add Prop-content-length: 70 Content-length: 70 K 13 svn:externals V 35 ^/externals/project1 deps/project1 PROPS-END Node-path: trunk/subdir2 Node-kind: dir Node-action: add Prop-content-length: 70 Content-length: 70 K 13 svn:externals V 35 ^/externals/project1 deps/project1 PROPS-END Revision-number: 6 Prop-content-length: 122 Content-length: 122 K 7 svn:log V 20 externals in subtree K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:08.059874Z PROPS-END Node-path: branches/branch1 Node-kind: dir Node-action: add Node-copyfrom-rev: 5 Node-copyfrom-path: trunk Node-path: branches/branch1/subdir2 Node-kind: dir Node-action: change Prop-content-length: 10 Content-length: 10 PROPS-END Revision-number: 7 Prop-content-length: 139 Content-length: 139 K 7 svn:log V 37 externals in subtree, removed on root K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:10.059295Z PROPS-END Node-path: branches/branch2 Node-kind: dir Node-action: add Node-copyfrom-rev: 5 Node-copyfrom-path: trunk Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: branches/branch2/subdir2 Node-kind: dir Node-action: change Prop-content-length: 10 Content-length: 10 PROPS-END Revision-number: 8 Prop-content-length: 125 Content-length: 125 K 7 svn:log V 23 remove externals subdir K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:11.058317Z PROPS-END Node-path: trunk/subdir Node-action: delete Revision-number: 9 Prop-content-length: 126 Content-length: 126 K 7 svn:log V 24 remove externals subdir2 K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:12.058270Z PROPS-END Node-path: trunk/subdir2 Node-kind: dir Node-action: change Prop-content-length: 10 Content-length: 10 PROPS-END Revision-number: 10 Prop-content-length: 127 Content-length: 127 K 7 svn:log V 25 remove externals project2 K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:14.058780Z PROPS-END Node-path: externals/project2 Node-action: delete Revision-number: 11 Prop-content-length: 109 Content-length: 109 K 7 svn:log V 8 change a K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:15.045928Z PROPS-END Node-path: trunk/a Node-kind: file Node-action: change Text-content-length: 4 Text-content-md5: 0d227f1abf8c2932d342e9b99cc957eb Text-content-sha1: d7c8127a20a396cff08af086a1c695b0636f0c29 Content-length: 4 a a