mercurial/localrepo.py
changeset 13788 307c72686eb0
parent 13787 5333c87f6048
child 13795 43b5fe18ea6c
equal deleted inserted replaced
13787:5333c87f6048 13788:307c72686eb0
  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