##// END OF EJS Templates
revlog: linearize created changegroups in generaldelta revlogs...
Sune Foldager -
r14365:a8e3931e default
parent child Browse files
Show More
@@ -1544,18 +1544,23 b' class localrepository(repo.repository):'
1544 1544 return fstate[1][x]
1545 1545
1546 1546 bundler = changegroup.bundle10(lookup)
1547 reorder = self.ui.config('bundle', 'reorder', 'auto')
1548 if reorder == 'auto':
1549 reorder = None
1550 else:
1551 reorder = util.parsebool(reorder)
1547 1552
1548 1553 def gengroup():
1549 1554 # Create a changenode group generator that will call our functions
1550 1555 # back to lookup the owning changenode and collect information.
1551 for chunk in cl.group(csets, bundler):
1556 for chunk in cl.group(csets, bundler, reorder=reorder):
1552 1557 yield chunk
1553 1558 self.ui.progress(_('bundling'), None)
1554 1559
1555 1560 # Create a generator for the manifestnodes that calls our lookup
1556 1561 # and data collection functions back.
1557 1562 count[0] = 0
1558 for chunk in mf.group(prune(mf, mfs), bundler):
1563 for chunk in mf.group(prune(mf, mfs), bundler, reorder=reorder):
1559 1564 yield chunk
1560 1565 self.ui.progress(_('bundling'), None)
1561 1566
@@ -1572,7 +1577,7 b' class localrepository(repo.repository):'
1572 1577 first = True
1573 1578
1574 1579 for chunk in filerevlog.group(prune(filerevlog, fstate[1]),
1575 bundler):
1580 bundler, reorder=reorder):
1576 1581 if first:
1577 1582 if chunk == bundler.close():
1578 1583 break
@@ -1640,17 +1645,22 b' class localrepository(repo.repository):'
1640 1645 return cl.node(revlog.linkrev(revlog.rev(x)))
1641 1646
1642 1647 bundler = changegroup.bundle10(lookup)
1648 reorder = self.ui.config('bundle', 'reorder', 'auto')
1649 if reorder == 'auto':
1650 reorder = None
1651 else:
1652 reorder = util.parsebool(reorder)
1643 1653
1644 1654 def gengroup():
1645 1655 '''yield a sequence of changegroup chunks (strings)'''
1646 1656 # construct a list of all changed files
1647 1657
1648 for chunk in cl.group(nodes, bundler):
1658 for chunk in cl.group(nodes, bundler, reorder=reorder):
1649 1659 yield chunk
1650 1660 self.ui.progress(_('bundling'), None)
1651 1661
1652 1662 count[0] = 0
1653 for chunk in mf.group(gennodelst(mf), bundler):
1663 for chunk in mf.group(gennodelst(mf), bundler, reorder=reorder):
1654 1664 yield chunk
1655 1665 self.ui.progress(_('bundling'), None)
1656 1666
@@ -1661,7 +1671,8 b' class localrepository(repo.repository):'
1661 1671 raise util.Abort(_("empty or missing revlog for %s") % fname)
1662 1672 fstate[0] = fname
1663 1673 first = True
1664 for chunk in filerevlog.group(gennodelst(filerevlog), bundler):
1674 for chunk in filerevlog.group(gennodelst(filerevlog), bundler,
1675 reorder=reorder):
1665 1676 if first:
1666 1677 if chunk == bundler.close():
1667 1678 break
@@ -14,7 +14,7 b' and O(changes) merge between branches.'
14 14 # import stuff from node for others to import from revlog
15 15 from node import bin, hex, nullid, nullrev, short #@UnusedImport
16 16 from i18n import _
17 import ancestor, mdiff, parsers, error, util
17 import ancestor, mdiff, parsers, error, util, dagutil
18 18 import struct, zlib, errno
19 19
20 20 _pack = struct.pack
@@ -1086,7 +1086,7 b' class revlog(object):'
1086 1086 self._basecache = (curr, chainbase)
1087 1087 return node
1088 1088
1089 def group(self, nodelist, bundler):
1089 def group(self, nodelist, bundler, reorder=None):
1090 1090 """Calculate a delta group, yielding a sequence of changegroup chunks
1091 1091 (strings).
1092 1092
@@ -1098,7 +1098,14 b' class revlog(object):'
1098 1098 changegroup starts with a full revision.
1099 1099 """
1100 1100
1101 revs = sorted([self.rev(n) for n in nodelist])
1101 # for generaldelta revlogs, we linearize the revs; this will both be
1102 # much quicker and generate a much smaller bundle
1103 if (self._generaldelta and reorder is not False) or reorder:
1104 dag = dagutil.revlogdag(self)
1105 revs = set(self.rev(n) for n in nodelist)
1106 revs = dag.linearize(revs)
1107 else:
1108 revs = sorted([self.rev(n) for n in nodelist])
1102 1109
1103 1110 # if we don't have any revisions touched by these changesets, bail
1104 1111 if not revs:
General Comments 0
You need to be logged in to leave comments. Login now