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