245 requirements = streamclone.readbundle1header(fh)[2] |
245 requirements = streamclone.readbundle1header(fh)[2] |
246 params = 'requirements=%s' % ','.join(sorted(requirements)) |
246 params = 'requirements=%s' % ','.join(sorted(requirements)) |
247 return 'none-packed1;%s' % urlreq.quote(params) |
247 return 'none-packed1;%s' % urlreq.quote(params) |
248 else: |
248 else: |
249 raise error.Abort(_('unknown bundle type: %s') % b) |
249 raise error.Abort(_('unknown bundle type: %s') % b) |
250 |
|
251 def buildobsmarkerspart(bundler, markers): |
|
252 """add an obsmarker part to the bundler with <markers> |
|
253 |
|
254 No part is created if markers is empty. |
|
255 Raises ValueError if the bundler doesn't support any known obsmarker format. |
|
256 """ |
|
257 if markers: |
|
258 remoteversions = bundle2.obsmarkersversion(bundler.capabilities) |
|
259 version = obsolete.commonversion(remoteversions) |
|
260 if version is None: |
|
261 raise ValueError('bundler does not support common obsmarker format') |
|
262 stream = obsolete.encodemarkers(markers, True, version=version) |
|
263 return bundler.newpart('obsmarkers', data=stream) |
|
264 return None |
|
265 |
250 |
266 def _computeoutgoing(repo, heads, common): |
251 def _computeoutgoing(repo, heads, common): |
267 """Computes which revs are outgoing given a set of common |
252 """Computes which revs are outgoing given a set of common |
268 and a set of heads. |
253 and a set of heads. |
269 |
254 |
820 if obsolete.commonversion(remoteversions) is None: |
805 if obsolete.commonversion(remoteversions) is None: |
821 return |
806 return |
822 pushop.stepsdone.add('obsmarkers') |
807 pushop.stepsdone.add('obsmarkers') |
823 if pushop.outobsmarkers: |
808 if pushop.outobsmarkers: |
824 markers = sorted(pushop.outobsmarkers) |
809 markers = sorted(pushop.outobsmarkers) |
825 buildobsmarkerspart(bundler, markers) |
810 bundle2.buildobsmarkerspart(bundler, markers) |
826 |
811 |
827 @b2partsgenerator('bookmarks') |
812 @b2partsgenerator('bookmarks') |
828 def _pushb2bookmarks(pushop, bundler): |
813 def _pushb2bookmarks(pushop, bundler): |
829 """handle bookmark push through bundle2""" |
814 """handle bookmark push through bundle2""" |
830 if 'bookmarks' in pushop.stepsdone: |
815 if 'bookmarks' in pushop.stepsdone: |
1646 if heads is None: |
1631 if heads is None: |
1647 heads = repo.heads() |
1632 heads = repo.heads() |
1648 subset = [c.node() for c in repo.set('::%ln', heads)] |
1633 subset = [c.node() for c in repo.set('::%ln', heads)] |
1649 markers = repo.obsstore.relevantmarkers(subset) |
1634 markers = repo.obsstore.relevantmarkers(subset) |
1650 markers = sorted(markers) |
1635 markers = sorted(markers) |
1651 buildobsmarkerspart(bundler, markers) |
1636 bundle2.buildobsmarkerspart(bundler, markers) |
1652 |
1637 |
1653 @getbundle2partsgenerator('hgtagsfnodes') |
1638 @getbundle2partsgenerator('hgtagsfnodes') |
1654 def _getbundletagsfnodes(bundler, repo, source, bundlecaps=None, |
1639 def _getbundletagsfnodes(bundler, repo, source, bundlecaps=None, |
1655 b2caps=None, heads=None, common=None, |
1640 b2caps=None, heads=None, common=None, |
1656 **kwargs): |
1641 **kwargs): |