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.
#!/bin/sh
http_proxy= hg clone static-http://localhost:20059/ copy
echo $?
ls copy 2>/dev/null || echo copy: No such file or directory
# This server doesn't do range requests so it's basically only good for
# one pull
cat > dumb.py <<EOF
import BaseHTTPServer, SimpleHTTPServer, signal
def run(server_class=BaseHTTPServer.HTTPServer,
handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler):
server_address = ('localhost', 20059)
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
signal.signal(signal.SIGTERM, lambda x: sys.exit(0))
run()
EOF
python dumb.py 2>/dev/null &
echo $! >> $DAEMON_PIDS
mkdir remote
cd remote
hg init
echo foo > bar
hg add bar
hg commit -m"test" -d "1000000 0"
hg tip
cd ..
http_proxy= hg clone static-http://localhost:20059/remote local
cd local
hg verify
cat bar
http_proxy= hg pull
kill $!