Mercurial > hg
view tests/test-impexp-branch.t @ 14087:f3d585c9b042
graphmod: restore generator nature of dagwalker
9966c95b8c4f introduced the ability to walk the DAG
given arbitrary revisions, but changed the behaviour of
it to return a list of all nodes (and create a changectx
for each one) rather than doing it lazily.
This has a pretty significant impact on performance for large
repositories (tested on CPython repo, with output disabled):
$ time hg glog
real 0m2.642s
user 0m2.560s
sys 0m0.080s
Before 9966c95b8c4f:
$ time hg glog
real 0m0.143s
user 0m0.112s
sys 0m0.032s
And after this fix:
$ time hg glog
real 0m0.213s
user 0m0.184s
sys 0m0.028s
author | Idan Kamara <idankk86@gmail.com> |
---|---|
date | Sat, 30 Apr 2011 15:10:58 +0300 |
parents | 46ab8c5dd99a |
children | fbbe9239574a |
line wrap: on
line source
$ cat >findbranch.py <<EOF > import re, sys > > head_re = re.compile('^#(?:(?:\\s+([A-Za-z][A-Za-z0-9_]*)(?:\\s.*)?)|(?:\\s*))$') > > for line in sys.stdin: > hmatch = head_re.match(line) > if not hmatch: > sys.exit(1) > if hmatch.group(1) == 'Branch': > sys.exit(0) > sys.exit(1) > EOF $ hg init a $ cd a $ echo "Rev 1" >rev $ hg add rev $ hg commit -m "No branch." $ hg branch abranch marked working directory as branch abranch $ echo "Rev 2" >rev $ hg commit -m "With branch." $ if hg export 0 | python ../findbranch.py; then > echo "Export of default branch revision has Branch header" 1>&2 > exit 1 > fi $ if hg export 1 | python ../findbranch.py; then > : # Do nothing > else > echo "Export of branch revision is missing Branch header" 1>&2 > exit 1 > fi Make sure import still works with branch information in patches. $ cd .. $ hg init b $ cd b $ hg -R ../a export 0 | hg import - applying patch from stdin $ hg -R ../a export 1 | hg import - applying patch from stdin $ cd .. $ rm -rf b $ hg init b $ cd b $ hg -R ../a export 0 | hg import --exact - applying patch from stdin $ hg -R ../a export 1 | hg import --exact - applying patch from stdin