Mercurial > hg
view tests/test-clone-cgi.t @ 22573:f528bfb25b45
revert: special case 'hg revert --all'
On large repos, hg revert --all can take over 13 seconds. This is mainly due to
it walking the tree three times: once to find the list of files in the
dirstate, once to find the list of files in the target, and once to compute the
status from the dirstate to the target.
This optimizes the hg revert --all case to only require the final status. This
speeds it up to 1.3 seconds or so (with hgwatchman enabled).
Further optimizations could be done for the -r NODE and pattern cases, but they
are significantly more complex.
author | Durham Goode <durham@fb.com> |
---|---|
date | Fri, 19 Sep 2014 18:43:53 -0700 |
parents | 7a9cbb315d84 |
children | 75be14993fda |
line wrap: on
line source
#require no-msys # MSYS will translate web paths as if they were file paths This is a test of the wire protocol over CGI-based hgweb. initialize repository $ hg init test $ cd test $ echo a > a $ hg ci -Ama adding a $ cd .. $ cat >hgweb.cgi <<HGWEB > # > # An example CGI script to use hgweb, edit as necessary > import cgitb > cgitb.enable() > from mercurial import demandimport; demandimport.enable() > from mercurial.hgweb import hgweb > from mercurial.hgweb import wsgicgi > application = hgweb("test", "Empty test repository") > wsgicgi.launch(application) > HGWEB $ chmod 755 hgweb.cgi try hgweb request $ . "$TESTDIR/cgienv" $ QUERY_STRING="cmd=changegroup&roots=0000000000000000000000000000000000000000"; export QUERY_STRING $ python hgweb.cgi >page1 2>&1 $ python "$TESTDIR/md5sum.py" page1 1f424bb22ec05c3c6bc866b6e67efe43 page1 make sure headers are sent even when there is no body $ QUERY_STRING="cmd=listkeys&namespace=nosuchnamespace" python hgweb.cgi Status: 200 Script output follows\r (esc) Content-Type: application/mercurial-0.1\r (esc) Content-Length: 0\r (esc) \r (esc)