##// 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:

r37803:b4d85bc1 default
r37869:04ceb267 @26 default
Show More
wireprotohelpers.sh
58 lines | 1.5 KiB | application/x-sh | BashLexer
/ tests / wireprotohelpers.sh
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 HTTPV2=exp-http-v2-0001
Gregory Szorc
wireprotov2: change command response protocol to include a leading map...
r37743 MEDIATYPE=application/mercurial-exp-framing-0005
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500
sendhttpraw() {
hg --verbose debugwireproto --peer raw http://$LOCALIP:$HGPORT/
}
Gregory Szorc
wireproto: crude support for version 2 HTTP peer...
r37501 sendhttpv2peer() {
Gregory Szorc
debugcommands: ability to suppress logging of handshake...
r37736 hg --verbose debugwireproto --nologhandshake --peer http2 http://$LOCALIP:$HGPORT/
}
sendhttpv2peerhandshake() {
Gregory Szorc
wireproto: crude support for version 2 HTTP peer...
r37501 hg --verbose debugwireproto --peer http2 http://$LOCALIP:$HGPORT/
}
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 cat > dummycommands.py << EOF
from mercurial import (
wireprototypes,
Gregory Szorc
wireproto: rename wireproto to wireprotov1server (API)...
r37803 wireprotov1server,
Gregory Szorc
wireproto: make version 2 @wireprotocommand an independent function...
r37798 wireprotov2server,
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 )
Gregory Szorc
wireproto: rename wireproto to wireprotov1server (API)...
r37803 @wireprotov1server.wireprotocommand('customreadonly', permission='pull')
Gregory Szorc
wireproto: make @wireprotocommand version 1 only by default...
r37558 def customreadonlyv1(repo, proto):
return wireprototypes.bytesresponse(b'customreadonly bytes response')
Gregory Szorc
wireproto: make version 2 @wireprotocommand an independent function...
r37798 @wireprotov2server.wireprotocommand('customreadonly', permission='pull')
Gregory Szorc
wireproto: make @wireprotocommand version 1 only by default...
r37558 def customreadonlyv2(repo, proto):
Gregory Szorc
wireprotov2: define response data as CBOR...
r37740 return wireprototypes.cborresponse(b'customreadonly bytes response')
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500
Gregory Szorc
wireproto: rename wireproto to wireprotov1server (API)...
r37803 @wireprotov1server.wireprotocommand('customreadwrite', permission='push')
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 def customreadwrite(repo, proto):
return wireprototypes.bytesresponse(b'customreadwrite bytes response')
Gregory Szorc
wireproto: make @wireprotocommand version 1 only by default...
r37558
Gregory Szorc
wireproto: make version 2 @wireprotocommand an independent function...
r37798 @wireprotov2server.wireprotocommand('customreadwrite', permission='push')
Gregory Szorc
wireproto: make @wireprotocommand version 1 only by default...
r37558 def customreadwritev2(repo, proto):
Gregory Szorc
wireprotov2: define response data as CBOR...
r37740 return wireprototypes.cborresponse(b'customreadwrite bytes response')
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 EOF
cat >> $HGRCPATH << EOF
[extensions]
drawdag = $TESTDIR/drawdag.py
EOF
enabledummycommands() {
cat >> $HGRCPATH << EOF
[extensions]
dummycommands = $TESTTMP/dummycommands.py
EOF
}
enablehttpv2() {
cat >> $1/.hg/hgrc << EOF
[experimental]
web.apiserver = true
web.api.http-v2 = true
EOF
}