620 gy = y.next() |
620 gy = y.next() |
621 else: |
621 else: |
622 #print "next x" |
622 #print "next x" |
623 gx = x.next() |
623 gx = x.next() |
624 |
624 |
625 def group(self, linkmap): |
625 def group(self, nodelist, lookup, infocollect = None): |
626 """calculate a delta group |
626 """calculate a delta group |
627 |
627 |
628 Given a list of changeset revs, return a set of deltas and |
628 Given a list of changeset revs, return a set of deltas and |
629 metadata corresponding to nodes. the first delta is |
629 metadata corresponding to nodes. the first delta is |
630 parent(nodes[0]) -> nodes[0] the receiver is guaranteed to |
630 parent(nodes[0]) -> nodes[0] the receiver is guaranteed to |
631 have this parent as it has all history before these |
631 have this parent as it has all history before these |
632 changesets. parent is parent[0] |
632 changesets. parent is parent[0] |
633 """ |
633 """ |
634 revs = [] |
634 revs = [self.rev(n) for n in nodelist] |
635 needed = {} |
635 needed = dict.fromkeys(revs, 1) |
636 |
|
637 # find file nodes/revs that match changeset revs |
|
638 for i in xrange(0, self.count()): |
|
639 if self.index[i][3] in linkmap: |
|
640 revs.append(i) |
|
641 needed[i] = 1 |
|
642 |
636 |
643 # if we don't have any revisions touched by these changesets, bail |
637 # if we don't have any revisions touched by these changesets, bail |
644 if not revs: |
638 if not revs: |
645 yield struct.pack(">l", 0) |
639 yield struct.pack(">l", 0) |
646 return |
640 return |
704 deltas = [] |
698 deltas = [] |
705 for d in xrange(0, len(revs) - 1): |
699 for d in xrange(0, len(revs) - 1): |
706 a, b = revs[d], revs[d + 1] |
700 a, b = revs[d], revs[d + 1] |
707 n = self.node(b) |
701 n = self.node(b) |
708 |
702 |
|
703 if infocollect is not None: |
|
704 infocollect(n) |
|
705 |
709 # do we need to construct a new delta? |
706 # do we need to construct a new delta? |
710 if a + 1 != b or self.base(b) == b: |
707 if a + 1 != b or self.base(b) == b: |
711 if a >= 0: |
708 if a >= 0: |
712 base = self.base(a) |
709 base = self.base(a) |
713 ta = chunks[self.base(a)] |
710 ta = chunks[self.base(a)] |