Mercurial > hg-stable
changeset 26445:f134fb33c906
streamclone: move streaming clone logic from localrepo
This is the last remnants of streaming clone code in localrepo.py.
This is a mostly mechanical transplant of code to a new file. Only a
rewrite of "self" to "repo" was performed. The code will be
significantly refactored in upcoming patches. So don't scrutinize it too
closely.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Fri, 02 Oct 2015 21:39:04 -0700 |
parents | 623743010133 |
children | 3ea10bb761ce |
files | mercurial/localrepo.py mercurial/streamclone.py |
diffstat | 2 files changed, 27 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/localrepo.py Fri Oct 02 16:24:56 2015 -0700 +++ b/mercurial/localrepo.py Fri Oct 02 21:39:04 2015 -0700 @@ -1794,31 +1794,7 @@ keyword arguments: heads: list of revs to clone (forces use of pull) stream: use streaming clone if possible''' - - # now, all clients that can request uncompressed clones can - # read repo formats supported by all servers that can serve - # them. - - # if revlog format changes, client will have to check version - # and format flags on "stream" capability, and use - # uncompressed only if compatible. - - if stream is None: - # if the server explicitly prefers to stream (for fast LANs) - stream = remote.capable('stream-preferred') - - if stream and not heads: - # 'stream' means remote revlog format is revlogv1 only - if remote.capable('stream'): - streamclone.streamin(self, remote, set(('revlogv1',))) - else: - # otherwise, 'streamreqs' contains the remote revlog format - streamreqs = remote.capable('streamreqs') - if streamreqs: - streamreqs = set(streamreqs.split(',')) - # if we support it, stream in and adjust our requirements - if not streamreqs - self.supportedformats: - streamclone.streamin(self, remote, streamreqs) + streamclone.maybeperformstreamclone(self, remote, heads, stream) # internal config: ui.quietbookmarkmove quiet = self.ui.backupconfig('ui', 'quietbookmarkmove')
--- a/mercurial/streamclone.py Fri Oct 02 16:24:56 2015 -0700 +++ b/mercurial/streamclone.py Fri Oct 02 21:39:04 2015 -0700 @@ -17,6 +17,32 @@ util, ) +def maybeperformstreamclone(repo, remote, heads, stream): + # now, all clients that can request uncompressed clones can + # read repo formats supported by all servers that can serve + # them. + + # if revlog format changes, client will have to check version + # and format flags on "stream" capability, and use + # uncompressed only if compatible. + + if stream is None: + # if the server explicitly prefers to stream (for fast LANs) + stream = remote.capable('stream-preferred') + + if stream and not heads: + # 'stream' means remote revlog format is revlogv1 only + if remote.capable('stream'): + streamin(repo, remote, set(('revlogv1',))) + else: + # otherwise, 'streamreqs' contains the remote revlog format + streamreqs = remote.capable('streamreqs') + if streamreqs: + streamreqs = set(streamreqs.split(',')) + # if we support it, stream in and adjust our requirements + if not streamreqs - repo.supportedformats: + streamin(repo, remote, streamreqs) + def allowservergeneration(ui): """Whether streaming clones are allowed from the server.""" return ui.configbool('server', 'uncompressed', True, untrusted=True)