##// END OF EJS Templates
bookmarks: cache reverse mapping (issue5868)...
bookmarks: cache reverse mapping (issue5868) I chose a simpler implementation. If the initial cost of building reverse mapping is significant, we'll have to move it under @propertycache. The nodemap could be a dict of sets, but I think keeping a sorted list is better since each node is likely to have zero/one bookmark. Micro-benchmark with 1001 bookmarks and 1001 revisions: $ for n in `seq 0 1000`; do touch $n; hg book book$n; hg ci -qAm$n; done $ hg bookmarks --time > /dev/null (orig) time: real 0.040 secs (user 0.050+0.000 sys 0.000+0.000) (new) time: real 0.040 secs (user 0.040+0.000 sys 0.010+0.000) $ hg log -T '{bookmarks}\n' --time > /dev/null (orig) time: real 0.160 secs (user 0.160+0.000 sys 0.000+0.000) (new) time: real 0.090 secs (user 0.100+0.000 sys 0.000+0.000)

File last commit:

r33289:abd7dedb default
r37869:04ceb267 @26 default
Show More
test-sparse-clone.t
72 lines | 1.5 KiB | text/troff | Tads3Lexer
test sparse
$ cat >> $HGRCPATH << EOF
> [ui]
> ssh = $PYTHON "$RUNTESTDIR/dummyssh"
> username = nobody <no.reply@fb.com>
> [extensions]
> sparse=
> purge=
> strip=
> rebase=
> EOF
$ hg init myrepo
$ cd myrepo
$ echo a > index.html
$ echo x > data.py
$ echo z > readme.txt
$ cat > webpage.sparse <<EOF
> [include]
> *.html
> EOF
$ cat > backend.sparse <<EOF
> [include]
> *.py
> EOF
$ hg ci -Aqm 'initial'
$ cd ..
Verify local clone with a sparse profile works
$ hg clone --enable-profile webpage.sparse myrepo clone1
updating to branch default
warning: sparse profile 'webpage.sparse' not found in rev 000000000000 - ignoring it
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd clone1
$ ls
index.html
$ cd ..
Verify local clone with include works
$ hg clone --include *.sparse myrepo clone2
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd clone2
$ ls
backend.sparse
webpage.sparse
$ cd ..
Verify local clone with exclude works
$ hg clone --exclude data.py myrepo clone3
updating to branch default
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd clone3
$ ls
backend.sparse
index.html
readme.txt
webpage.sparse
$ cd ..
Verify sparse clone profile over ssh works
$ hg clone -q --enable-profile webpage.sparse ssh://user@dummy/myrepo clone4
warning: sparse profile 'webpage.sparse' not found in rev 000000000000 - ignoring it
$ cd clone4
$ ls
index.html
$ cd ..