##// END OF EJS Templates
changegroup: don't try to build changelog chunks if not required...
Pulkit Goyal -
r41491:fa7d61f9 default
parent child Browse files
Show More
@@ -817,13 +817,13 b' class cgpacker(object):'
817 self._verbosenote(_('uncompressed size of bundle content:\n'))
817 self._verbosenote(_('uncompressed size of bundle content:\n'))
818 size = 0
818 size = 0
819
819
820 clstate, deltas = self._generatechangelog(cl, clnodes)
820 clstate, deltas = self._generatechangelog(cl, clnodes,
821 generate=changelog)
821 for delta in deltas:
822 for delta in deltas:
822 if changelog:
823 for chunk in _revisiondeltatochunks(delta,
823 for chunk in _revisiondeltatochunks(delta,
824 self._builddeltaheader):
824 self._builddeltaheader):
825 size += len(chunk)
825 size += len(chunk)
826 yield chunk
826 yield chunk
827
827
828 close = closechunk()
828 close = closechunk()
829 size += len(close)
829 size += len(close)
@@ -917,12 +917,15 b' class cgpacker(object):'
917 if clnodes:
917 if clnodes:
918 repo.hook('outgoing', node=hex(clnodes[0]), source=source)
918 repo.hook('outgoing', node=hex(clnodes[0]), source=source)
919
919
920 def _generatechangelog(self, cl, nodes):
920 def _generatechangelog(self, cl, nodes, generate=True):
921 """Generate data for changelog chunks.
921 """Generate data for changelog chunks.
922
922
923 Returns a 2-tuple of a dict containing state and an iterable of
923 Returns a 2-tuple of a dict containing state and an iterable of
924 byte chunks. The state will not be fully populated until the
924 byte chunks. The state will not be fully populated until the
925 chunk stream has been fully consumed.
925 chunk stream has been fully consumed.
926
927 if generate is False, the state will be fully populated and no chunk
928 stream will be yielded
926 """
929 """
927 clrevorder = {}
930 clrevorder = {}
928 manifests = {}
931 manifests = {}
@@ -937,6 +940,20 b' class cgpacker(object):'
937 'clrevtomanifestrev': clrevtomanifestrev,
940 'clrevtomanifestrev': clrevtomanifestrev,
938 }
941 }
939
942
943 if not (generate or self._ellipses):
944 # sort the nodes in storage order
945 nodes = sorted(nodes, key=cl.rev)
946 for node in nodes:
947 c = cl.changelogrevision(node)
948 clrevorder[node] = len(clrevorder)
949 # record the first changeset introducing this manifest version
950 manifests.setdefault(c.manifest, node)
951 # Record a complete list of potentially-changed files in
952 # this manifest.
953 changedfiles.update(c.files)
954
955 return state, ()
956
940 # Callback for the changelog, used to collect changed files and
957 # Callback for the changelog, used to collect changed files and
941 # manifest nodes.
958 # manifest nodes.
942 # Returns the linkrev node (identity in the changelog case).
959 # Returns the linkrev node (identity in the changelog case).
General Comments 0
You need to be logged in to leave comments. Login now