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
mkdir t
cd t
hg init
echo "added file1" > file1
echo "added file2" > file2
hg add file1 file2
hg commit -m "added file1 and file2" -d "1000000 0" -u user
echo "changed file1" >> file1
hg commit -m "changed file1" -d "1000000 0" -u user
hg -q log
hg id
hg update -C 0
hg id
echo "changed file1" >> file1
hg id
hg revert
hg diff
hg status
hg id
hg update
hg diff
hg status
hg id
hg update -C 0
echo "changed file1" >> file1
HGMERGE=merge hg update
hg diff
hg status
hg id
hg revert
hg diff
hg status
hg id
hg revert -r tip
hg diff
hg status
hg id
hg update -C
hg diff
hg status
hg id
cd ..; /bin/rm -rf t