Mercurial > hgsubversion
view tests/fixtures/branchtagcollision.sh @ 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 | f28e0f54a6ef |
children |
line wrap: on
line source
#!/bin/bash # # Generate branchtagcollision.svndump # # Generates an svn repository with a branch and a tag that have the same name. mkdir temp cd temp svnadmin create testrepo svn checkout file://`pwd`/testrepo client cd client mkdir trunk mkdir branches mkdir tags svn add trunk branches tags svn commit -m "Initial commit" echo "fileA" >> trunk/fileA svn add trunk/fileA svn commit -m "Added fileA" svn cp trunk branches/A svn commit -m "added branch" echo "fileB" >> trunk/fileB svn add trunk/fileB svn commit -m "Added fileB" svn cp trunk tags/A svn commit -m "added bad tag" cd .. svnadmin dump testrepo > ../branchtagcollision.svndump