##// END OF EJS Templates
bundle2: add an exchange.getbundle function...
Pierre-Yves David -
r20954:dba91f80 default
parent child Browse files
Show More
@@ -552,3 +552,34 b' def _pullobsolete(pullop):'
552 pullop.repo.invalidatevolatilesets()
552 pullop.repo.invalidatevolatilesets()
553 return tr
553 return tr
554
554
555 def getbundle(repo, source, heads=None, common=None, bundlecaps=None):
556 """return a full bundle (with potentially multiple kind of parts)
557
558 Could be a bundle HG10 or a bundle HG20 depending on bundlecaps
559 passed. For now, the bundle can contain only changegroup, but this will
560 changes when more part type will be available for bundle2.
561
562 This is different from changegroup.getbundle that only returns an HG10
563 changegroup bundle. They may eventually get reunited in the future when we
564 have a clearer idea of the API we what to query different data.
565
566 The implementation is at a very early stage and will get massive rework
567 when the API of bundle is refined.
568 """
569 # build bundle here.
570 cg = changegroup.getbundle(repo, source, heads=heads,
571 common=common, bundlecaps=None)
572 if bundlecaps is None or 'HG20' not in bundlecaps:
573 return cg
574 # very crude first implementation,
575 # the bundle API will change and the generation will be done lazily.
576 bundler = bundle2.bundle20(repo.ui)
577 tempname = changegroup.writebundle(cg, None, 'HG10UN')
578 data = open(tempname).read()
579 part = bundle2.part('changegroup', data=data)
580 bundler.addpart(part)
581 temp = cStringIO.StringIO()
582 for c in bundler.getchunks():
583 temp.write(c)
584 temp.seek(0)
585 return bundle2.unbundle20(repo.ui, temp)
@@ -105,8 +105,8 b' class localpeer(peer.peerrepository):'
105
105
106 def getbundle(self, source, heads=None, common=None, bundlecaps=None,
106 def getbundle(self, source, heads=None, common=None, bundlecaps=None,
107 format='HG10'):
107 format='HG10'):
108 return changegroup.getbundle(self._repo, source, heads=heads,
108 return exchange.getbundle(self._repo, source, heads=heads,
109 common=common, bundlecaps=bundlecaps)
109 common=common, bundlecaps=bundlecaps)
110
110
111 # TODO We might want to move the next two calls into legacypeer and add
111 # TODO We might want to move the next two calls into legacypeer and add
112 # unbundle instead.
112 # unbundle instead.
General Comments 0
You need to be logged in to leave comments. Login now