add support for streaming clone.
existing clone code uses pull to get changes from remote repo. is very
slow, uses lots of memory and cpu.
new clone code has server write file data straight to client, client
writes file data straight to disk. memory and cpu used are very low,
clone is much faster over lan.
new client can still clone with pull, can still clone from older servers.
new server can still serve older clients.
A simple testing framework
To run the tests, do:
cd tests/
python run-tests.py
This finds all scripts in the test directory named test-* and executes
them. The scripts can be either shell scripts or Python. Each test is
run in a temporary directory that is removed when the test is complete.
A test-<x> succeeds if the script returns success and its output
matches test-<x>.out. If the new output doesn't match, it is stored in
test-<x>.err.
There are some tricky points here that you should be aware of when
writing tests:
- hg commit and hg merge want user interaction
for commit use -m "text"
for hg merge, set HGMERGE to something noninteractive (like true or merge)
- changeset hashes will change based on user and date which make
things like hg history output change
use commit -m "test" -u test -d "1000000 0"
- diff will show the current time
use hg diff | sed "s/\(\(---\|+++\) [a-zA-Z0-9_/.-]*\).*/\1/" to strip
dates