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 |
|
|
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