Mercurial > public > mercurial-scm > hg
comparison mercurial/changegroup.py @ 39012:c921ad9cae08
changegroup: move manifest chunk emission to generate()
We want to get to a point where we can emit data structures from
deltagroup() and derive the raw changegroup data as late as possible.
Differential Revision: https://phab.mercurial-scm.org/D4209
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 08 Aug 2018 15:14:59 -0700 |
parents | 2ebdd265fe8c |
children | c4a2d19d393a |
comparison
equal
deleted
inserted
replaced
39011:2ebdd265fe8c | 39012:c921ad9cae08 |
---|---|
869 'treemanifest' not in repo.requirements) | 869 'treemanifest' not in repo.requirements) |
870 | 870 |
871 fnodes = {} # needed file nodes | 871 fnodes = {} # needed file nodes |
872 | 872 |
873 size = 0 | 873 size = 0 |
874 for chunk in self.generatemanifests(commonrevs, clrevorder, | 874 it = self.generatemanifests( |
875 fastpathlinkrev, mfs, fnodes, source, | 875 commonrevs, clrevorder, fastpathlinkrev, mfs, fnodes, source, |
876 clstate['clrevtomanifestrev']): | 876 clstate['clrevtomanifestrev']) |
877 size += len(chunk) | 877 |
878 yield chunk | 878 for dir, chunks in it: |
879 if dir: | |
880 assert self.version == b'03' | |
881 chunk = _fileheader(dir) | |
882 size += len(chunk) | |
883 yield chunk | |
884 | |
885 for chunk in chunks: | |
886 size += len(chunk) | |
887 yield chunk | |
888 | |
889 close = closechunk() | |
890 size += len(close) | |
891 yield close | |
879 | 892 |
880 self._verbosenote(_('%8.i (manifests)\n') % size) | 893 self._verbosenote(_('%8.i (manifests)\n') % size) |
881 yield self._manifestsend | 894 yield self._manifestsend |
882 | 895 |
883 mfdicts = None | 896 mfdicts = None |
1051 lookupfn) | 1064 lookupfn) |
1052 else: | 1065 else: |
1053 revs = _sortnodesnormal(store, prunednodes, | 1066 revs = _sortnodesnormal(store, prunednodes, |
1054 self._reorder) | 1067 self._reorder) |
1055 | 1068 |
1056 if dir: | |
1057 assert self.version == b'03' | |
1058 chunk = _fileheader(dir) | |
1059 yield chunk | |
1060 | |
1061 it = deltagroup( | 1069 it = deltagroup( |
1062 self._repo, revs, store, False, lookupfn, | 1070 self._repo, revs, store, False, lookupfn, |
1063 self._deltaparentfn, self._builddeltaheader, | 1071 self._deltaparentfn, self._builddeltaheader, |
1064 ellipses=self._ellipses, | 1072 ellipses=self._ellipses, |
1065 units=_('manifests'), | 1073 units=_('manifests'), |
1066 clrevtolocalrev=clrevtolocalrev, | 1074 clrevtolocalrev=clrevtolocalrev, |
1067 fullclnodes=self._fullclnodes, | 1075 fullclnodes=self._fullclnodes, |
1068 precomputedellipsis=self._precomputedellipsis) | 1076 precomputedellipsis=self._precomputedellipsis) |
1069 | 1077 |
1070 for chunk in it: | 1078 yield dir, it |
1071 yield chunk | |
1072 | |
1073 close = closechunk() | |
1074 yield close | |
1075 | 1079 |
1076 # The 'source' parameter is useful for extensions | 1080 # The 'source' parameter is useful for extensions |
1077 def generatefiles(self, changedfiles, commonrevs, source, | 1081 def generatefiles(self, changedfiles, commonrevs, source, |
1078 mfdicts, fastpathlinkrev, fnodes, clrevs): | 1082 mfdicts, fastpathlinkrev, fnodes, clrevs): |
1079 changedfiles = list(filter(self._filematcher, changedfiles)) | 1083 changedfiles = list(filter(self._filematcher, changedfiles)) |