mercurial/revlog.py
changeset 13831 d69c9510d648
parent 13785 470ec600b525
child 14064 e4bfb9c337f3
equal deleted inserted replaced
13830:2dc6e09f2a7d 13831:d69c9510d648
  1056 
  1056 
  1057         if type(text) == str: # only accept immutable objects
  1057         if type(text) == str: # only accept immutable objects
  1058             self._cache = (node, curr, text)
  1058             self._cache = (node, curr, text)
  1059         return node
  1059         return node
  1060 
  1060 
  1061     def group(self, nodelist, lookup):
  1061     def group(self, nodelist, bundler):
  1062         """Calculate a delta group, yielding a sequence of changegroup chunks
  1062         """Calculate a delta group, yielding a sequence of changegroup chunks
  1063         (strings).
  1063         (strings).
  1064 
  1064 
  1065         Given a list of changeset revs, return a set of deltas and
  1065         Given a list of changeset revs, return a set of deltas and
  1066         metadata corresponding to nodes. The first delta is
  1066         metadata corresponding to nodes. The first delta is
  1072 
  1072 
  1073         revs = sorted([self.rev(n) for n in nodelist])
  1073         revs = sorted([self.rev(n) for n in nodelist])
  1074 
  1074 
  1075         # if we don't have any revisions touched by these changesets, bail
  1075         # if we don't have any revisions touched by these changesets, bail
  1076         if not revs:
  1076         if not revs:
  1077             yield changegroup.closechunk()
  1077             yield bundler.close()
  1078             return
  1078             return
  1079 
  1079 
  1080         # add the parent of the first rev
  1080         # add the parent of the first rev
  1081         p = self.parentrevs(revs[0])[0]
  1081         p = self.parentrevs(revs[0])[0]
  1082         revs.insert(0, p)
  1082         revs.insert(0, p)
  1083 
  1083 
  1084         # build deltas
  1084         # build deltas
  1085         for r in xrange(len(revs) - 1):
  1085         for r in xrange(len(revs) - 1):
  1086             a, b = revs[r], revs[r + 1]
  1086             a, b = revs[r], revs[r + 1]
  1087             nb = self.node(b)
  1087             nb = self.node(b)
  1088 
  1088             p1, p2 = self.parents(nb)
  1089             p = self.parents(nb)
  1089             prefix = ''
  1090             meta = nb + p[0] + p[1] + lookup(self, nb)
  1090 
  1091             if a == nullrev:
  1091             if a == nullrev:
  1092                 d = self.revision(nb)
  1092                 d = self.revision(nb)
  1093                 meta += mdiff.trivialdiffheader(len(d))
  1093                 prefix = mdiff.trivialdiffheader(len(d))
  1094             else:
  1094             else:
  1095                 d = self.revdiff(a, b)
  1095                 d = self.revdiff(a, b)
  1096             yield changegroup.chunkheader(len(meta) + len(d))
  1096             for c in bundler.revchunk(self, nb, p1, p2, prefix, d):
  1097             yield meta
  1097                 yield c
  1098             yield d
  1098 
  1099 
  1099         yield bundler.close()
  1100         yield changegroup.closechunk()
       
  1101 
  1100 
  1102     def addgroup(self, bundle, linkmapper, transaction):
  1101     def addgroup(self, bundle, linkmapper, transaction):
  1103         """
  1102         """
  1104         add a delta group
  1103         add a delta group
  1105 
  1104