##// END OF EJS Templates
rust: hooking into Python code...
rust: hooking into Python code We introduce a new class called 'rustlazyancestors' in the ancestors module, which is used only if parsers.rustlazyancestors does exist. The implementation of __contains__ stays unchanged, but is now backed by the Rust iterator. It would probably be a good candidate for further development, though, as it is mostly looping, and duplicates the 'seen' set. The Rust code could be further optimized, however it already gives rise to performance improvements: median timing from hg perfancestors: - on pypy: before: 0.077566s after: 0.016676s -79% - on mozilla central: before: 0.190037s after: 0.082225s -58% - on a private repository (about one million revisions): before: 0.567085s after: 0.108816s -80% - on another private repository (about 400 000 revisions): before: 1.440918s after: 0.290116s -80% median timing for hg perfbranchmap base - on pypy: before: 1.383413s after: 0.507993s -63% - on mozilla central: before: 2.821940s after: 1.258902s -55% - on a private repository (about one million revisions): before: 77.065076s after: 16.158475s -80% - on another private repository (about 401 000 revisions): before: 7.835503s after: 3.545331s -54%

File last commit:

r11194:67985364 stable
r40334:9cadb0f5 default
Show More
svndump-branches.sh
73 lines | 1.5 KiB | application/x-sh | BashLexer
/ tests / svn / svndump-branches.sh
Patrick Mezard
Rewrite svn tests using svndump...
r7475 #!/bin/sh
#
# Use this script to generate branches.svndump
#
mkdir temp
cd temp
mkdir project-orig
cd project-orig
mkdir trunk
mkdir branches
cd ..
svnadmin create svn-repo
svnurl=file://`pwd`/svn-repo
svn import project-orig $svnurl -m "init projA"
svn co $svnurl project
cd project
echo a > trunk/a
echo b > trunk/b
echo c > trunk/c
Patrick Mezard
convert/svn: remove dead code from entry deletion code path...
r8884 mkdir trunk/dir
echo e > trunk/dir/e
Patrick Mezard
Rewrite svn tests using svndump...
r7475 # Add a file within branches, used to confuse branch detection
echo d > branches/notinbranch
Patrick Mezard
convert/svn: remove dead code from entry deletion code path...
r8884 svn add trunk/a trunk/b trunk/c trunk/dir branches/notinbranch
Patrick Mezard
Rewrite svn tests using svndump...
r7475 svn ci -m hello
Patrick Mezard
convert/svn: remove dead code from entry deletion code path...
r8884 svn up
Patrick Mezard
Rewrite svn tests using svndump...
r7475
# Branch to old
svn copy trunk branches/old
svn rm branches/old/c
Patrick Mezard
convert/svn: remove dead code from entry deletion code path...
r8884 svn rm branches/old/dir
svn ci -m "branch trunk, remove c and dir"
Patrick Mezard
Rewrite svn tests using svndump...
r7475 svn up
# Update trunk
echo a >> trunk/a
svn ci -m "change a"
# Update old branch
echo b >> branches/old/b
svn ci -m "change b"
# Create a cross-branch revision
svn move trunk/b branches/old/c
echo c >> branches/old/c
svn ci -m "move and update c"
# Update old branch again
echo b >> branches/old/b
svn ci -m "change b again"
# Move back and forth between branch of similar names
# This used to generate fake copy records
svn up
svn move branches/old branches/old2
svn ci -m "move to old2"
svn move branches/old2 branches/old
svn ci -m "move back to old"
# Update trunk again
echo a > trunk/a
svn ci -m "last change to a"
# Branch again from a converted revision
svn copy -r 1 $svnurl/trunk branches/old3
svn ci -m "branch trunk@1 into old3"
cd ..
svnadmin dump svn-repo > ../branches.svndump