##// END OF EJS Templates
clone: only use stream when we understand the revlog format...
Sune Foldager -
r12296:d7fff529 default
parent child Browse files
Show More
@@ -1784,7 +1784,7 class localrepository(repo.repository):
1784 1784 return newheads - oldheads + 1
1785 1785
1786 1786
1787 def stream_in(self, remote):
1787 def stream_in(self, remote, requirements):
1788 1788 fp = remote.stream_out()
1789 1789 l = fp.readline()
1790 1790 try:
@@ -1829,6 +1829,13 class localrepository(repo.repository):
1829 1829 self.ui.status(_('transferred %s in %.1f seconds (%s/sec)\n') %
1830 1830 (util.bytecount(total_bytes), elapsed,
1831 1831 util.bytecount(total_bytes / elapsed)))
1832
1833 # new requirements = old non-format requirements + new format-related
1834 # requirements from the streamed-in repository
1835 requirements.update(set(self.requirements) - self.supportedformats)
1836 self._applyrequirements(requirements)
1837 self._writerequirements()
1838
1832 1839 self.invalidate()
1833 1840 return len(self.heads()) + 1
1834 1841
@@ -1847,8 +1854,17 class localrepository(repo.repository):
1847 1854 # and format flags on "stream" capability, and use
1848 1855 # uncompressed only if compatible.
1849 1856
1850 if stream and not heads and remote.capable('stream'):
1851 return self.stream_in(remote)
1857 if stream and not heads:
1858 # 'stream' means remote revlog format is revlogv1 only
1859 if remote.capable('stream'):
1860 return self.stream_in(remote, set(('revlogv1',)))
1861 # otherwise, 'streamreqs' contains the remote revlog format
1862 streamreqs = remote.capable('streamreqs')
1863 if streamreqs:
1864 streamreqs = set(streamreqs.split(','))
1865 # if we support it, stream in and adjust our requirements
1866 if not streamreqs - self.supportedformats:
1867 return self.stream_in(remote, streamreqs)
1852 1868 return self.pull(remote, heads)
1853 1869
1854 1870 def pushkey(self, namespace, key, old, new):
@@ -172,7 +172,13 def branches(repo, proto, nodes):
172 172 def capabilities(repo, proto):
173 173 caps = 'lookup changegroupsubset branchmap pushkey'.split()
174 174 if _allowstream(repo.ui):
175 caps.append('stream=%d' % repo.changelog.version)
175 requiredformats = repo.requirements & repo.supportedformats
176 # if our local revlogs are just revlogv1, add 'stream' cap
177 if not requiredformats - set(('revlogv1',)):
178 caps.append('stream')
179 # otherwise, add 'streamreqs' detailing our local revlog format
180 else:
181 caps.append('streamreqs=%s' % ','.join(requiredformats))
176 182 caps.append('unbundle=%s' % ','.join(changegroupmod.bundlepriority))
177 183 return ' '.join(caps)
178 184
General Comments 0
You need to be logged in to leave comments. Login now