diff --git a/remotefilelog/shallowbundle.py b/remotefilelog/shallowbundle.py --- a/remotefilelog/shallowbundle.py +++ b/remotefilelog/shallowbundle.py @@ -58,8 +58,15 @@ return True -@shallowutil.interposeclass(changegroup, 'cg1packer') -class shallowcg1packer(changegroup.cg1packer): +if util.safehasattr(changegroup, 'cg1packer'): + # Up until 4c99c6d1ef95 + cgpacker = changegroup.cg1packer +else: + # Since 4c99c6d1ef95 + cgpacker = changegroup.cgpacker + +@shallowutil.interposeclass(changegroup, cgpacker.__name__) +class shallowcg1packer(cgpacker): def generate(self, commonrevs, clnodes, fastpathlinkrev, source): if "remotefilelog" in self._repo.requirements: fastpathlinkrev = False @@ -226,8 +233,14 @@ if util.safehasattr(changegroup, 'cg2packer'): # Mercurial >= 3.3 - @shallowutil.interposeclass(changegroup, 'cg2packer') - class shallowcg2packer(changegroup.cg2packer): + cg2packer = changegroup.cg2packer +elif util.safehasattr(changegroup, 'cgpacker'): + # Since Mercurial 4c99c6d1ef95 + cg2packer = changegroup.cgpacker + +if cg2packer: + @shallowutil.interposeclass(changegroup, cg2packer.__name__) + class shallowcg2packer(cg2packer): def group(self, nodelist, rlog, lookup, units=None, reorder=None): # for revlogs, shallowgroup will be called twice in the same stack # -- once here, once up the inheritance hierarchy in @@ -239,8 +252,14 @@ units=units) if util.safehasattr(changegroup, 'cg3packer'): - @shallowutil.interposeclass(changegroup, 'cg3packer') - class shallowcg3packer(changegroup.cg3packer): + cg3packer = changegroup.cg3packer +elif util.safehasattr(changegroup, 'cgpacker'): + # Since Mercurial 4c99c6d1ef95 + cg3packer = changegroup.cgpacker + +if cgpacker: + @shallowutil.interposeclass(changegroup, cg3packer.__name__) + class shallowcg3packer(cg3packer): def generatemanifests(self, commonrevs, clrevorder, fastpathlinkrev, mfs, fnodes, *args, **kwargs): chunks = super(shallowcg3packer, self).generatemanifests(