stream_out - the previous command for sending raw revlog files -
was not carried forward to protocol version 2.
This commit introduces a minimal viable replacement for stream_out
in wire protocol version 2.
The new command allows obtaining "raw store files" - essentially
files from Mercurial's store as they exist on disk.
The command currently only allows obtaining the changelog or the
changelog plus root manifestlog. This is the feature set required
to support partial clones where only files data is partial.
We'll probably want to implement support for retrieving changelog
and manifest data via dedicated commands in order to facilitate
partial clone. And if we do decide to keep a command for streaming
"raw" files, we'll want to support tree manifests. This command
is very much a minimum viable implementation. I foresee things
changing substantially. None of wire protocol version 2 is
covered by BC yet. So hopefully the barrier to entry is low.
Having this here makes it infeasible to generate the revlog files on the fly, which means non-traditional storage backends won't ever be able to implement this endpoint efficiently.
Do we care? Should we note that this method is going to go away in all likelihood?