[PATCH 0 of 1] clone: only use stream when we understand the revlog format
Sune Foldager
cryo at cyanite.org
Mon Aug 30 16:21:39 UTC 2010
This patch is meant to fix issues with stream-cloning in the presense of
parentdelta, lwcopy (hopefully soon), and later additions that change the
interpretation of the revlog format, or the format itself.
Currently, the stream capability is sent like this:
stream=<revlog-version of changelog>
But the client doesn't check it, it only checks the changelog and it doesn't
capture the interpretation-changes and flag-changes in parentdelta and lwcopy.
This patch removes stream to prevent old clients from receiving incorrect data.
A new capability, tentatively called stream2, is added instead, and used by
new clients. It no longer comes with a revlog version.
To communicate requirements on the remote store, relevant to streaming, a
capability, tentatively called requires, is added which reflects some of the
flags on the remote store. Some flags are excluded since they are not relevant
to wire commands, currenty.
The client only uses stream if stream2 is set, and requires is a subset of what
the client supports with its localrepo. The patch is v1; it seems to work, but
I haven't added any tests.
STUFF TO SETTLE:
1) name of silly helper-variable 'localsupported'.
2) name of cap stream2.
3) name of cap requires.
4) if we don't anticipate uses outside stream, we can just join those two.
--
Sune
More information about the Mercurial-devel
mailing list