equal
deleted
inserted
replaced
1608 def gennodelst(log): |
1608 def gennodelst(log): |
1609 for r in log: |
1609 for r in log: |
1610 if log.linkrev(r) in revset: |
1610 if log.linkrev(r) in revset: |
1611 yield log.node(r) |
1611 yield log.node(r) |
1612 |
1612 |
1613 def lookuplinkrev_func(revlog): |
|
1614 def lookuplinkrev(n): |
|
1615 return cl.node(revlog.linkrev(revlog.rev(n))) |
|
1616 return lookuplinkrev |
|
1617 |
|
1618 def gengroup(): |
1613 def gengroup(): |
1619 '''yield a sequence of changegroup chunks (strings)''' |
1614 '''yield a sequence of changegroup chunks (strings)''' |
1620 # construct a list of all changed files |
1615 # construct a list of all changed files |
1621 changedfiles = set() |
1616 changedfiles = set() |
1622 mmfs = {} |
1617 mmfs = {} |
1636 changecount = count[0] |
1631 changecount = count[0] |
1637 self.ui.progress(_('bundling'), None) |
1632 self.ui.progress(_('bundling'), None) |
1638 |
1633 |
1639 mnfst = self.manifest |
1634 mnfst = self.manifest |
1640 nodeiter = gennodelst(mnfst) |
1635 nodeiter = gennodelst(mnfst) |
1641 mfunc = lookuplinkrev_func(mnfst) |
|
1642 count = [0] |
1636 count = [0] |
1643 def mlookup(revlog, x): |
1637 def mlookup(revlog, x): |
1644 count[0] += 1 |
1638 count[0] += 1 |
1645 self.ui.progress(_('bundling'), count[0], |
1639 self.ui.progress(_('bundling'), count[0], |
1646 unit=_('manifests'), total=changecount) |
1640 unit=_('manifests'), total=changecount) |
1647 return mfunc(x) |
1641 return cl.node(revlog.linkrev(revlog.rev(x))) |
1648 |
1642 |
1649 for chunk in mnfst.group(nodeiter, mlookup): |
1643 for chunk in mnfst.group(nodeiter, mlookup): |
1650 yield chunk |
1644 yield chunk |
1651 self.ui.progress(_('bundling'), None) |
1645 self.ui.progress(_('bundling'), None) |
1652 |
1646 |
1657 nodeiter = gennodelst(filerevlog) |
1651 nodeiter = gennodelst(filerevlog) |
1658 nodeiter = list(nodeiter) |
1652 nodeiter = list(nodeiter) |
1659 if nodeiter: |
1653 if nodeiter: |
1660 yield changegroup.chunkheader(len(fname)) |
1654 yield changegroup.chunkheader(len(fname)) |
1661 yield fname |
1655 yield fname |
1662 ffunc = lookuplinkrev_func(filerevlog) |
|
1663 def flookup(revlog, x): |
1656 def flookup(revlog, x): |
1664 self.ui.progress( |
1657 self.ui.progress( |
1665 _('bundling'), idx, item=fname, |
1658 _('bundling'), idx, item=fname, |
1666 total=efiles, unit=_('files')) |
1659 total=efiles, unit=_('files')) |
1667 return ffunc(x) |
1660 return cl.node(revlog.linkrev(revlog.rev(x))) |
1668 |
1661 |
1669 for chunk in filerevlog.group(nodeiter, flookup): |
1662 for chunk in filerevlog.group(nodeiter, flookup): |
1670 yield chunk |
1663 yield chunk |
1671 self.ui.progress(_('bundling'), None) |
1664 self.ui.progress(_('bundling'), None) |
1672 |
1665 |