/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/versionedfile.py

  • Committer: Jelmer Vernooij
  • Date: 2009-03-12 14:02:53 UTC
  • mfrom: (4135 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4137.
  • Revision ID: jelmer@samba.org-20090312140253-bmldbzlmsitfdrzf
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1534
1534
def fulltext_network_to_record(kind, bytes, line_end):
1535
1535
    """Convert a network fulltext record to record."""
1536
1536
    meta_len, = struct.unpack('!L', bytes[line_end:line_end+4])
1537
 
    record_meta = record_bytes[line_end+4:line_end+4+meta_len]
 
1537
    record_meta = bytes[line_end+4:line_end+4+meta_len]
1538
1538
    key, parents = bencode.bdecode_as_tuple(record_meta)
1539
1539
    if parents == 'nil':
1540
1540
        parents = None
1541
 
    fulltext = record_bytes[line_end+4+meta_len:]
1542
 
    return FulltextContentFactory(key, parents, None, fulltext)
 
1541
    fulltext = bytes[line_end+4+meta_len:]
 
1542
    return [FulltextContentFactory(key, parents, None, fulltext)]
1543
1543
 
1544
1544
 
1545
1545
def _length_prefix(bytes):
1546
1546
    return struct.pack('!L', len(bytes))
1547
1547
 
1548
1548
 
1549
 
def record_to_fulltext_bytes(self, record):
 
1549
def record_to_fulltext_bytes(record):
1550
1550
    if record.parents is None:
1551
1551
        parents = 'nil'
1552
1552
    else:
1555
1555
    record_content = record.get_bytes_as('fulltext')
1556
1556
    return "fulltext\n%s%s%s" % (
1557
1557
        _length_prefix(record_meta), record_meta, record_content)
 
1558
 
 
1559
 
 
1560
def sort_groupcompress(parent_map):
 
1561
    """Sort and group the keys in parent_map into groupcompress order.
 
1562
 
 
1563
    groupcompress is defined (currently) as reverse-topological order, grouped
 
1564
    by the key prefix.
 
1565
 
 
1566
    :return: A sorted-list of keys
 
1567
    """
 
1568
    # gc-optimal ordering is approximately reverse topological,
 
1569
    # properly grouped by file-id.
 
1570
    per_prefix_map = {}
 
1571
    for item in parent_map.iteritems():
 
1572
        key = item[0]
 
1573
        if isinstance(key, str) or len(key) == 1:
 
1574
            prefix = ''
 
1575
        else:
 
1576
            prefix = key[0]
 
1577
        try:
 
1578
            per_prefix_map[prefix].append(item)
 
1579
        except KeyError:
 
1580
            per_prefix_map[prefix] = [item]
 
1581
 
 
1582
    present_keys = []
 
1583
    for prefix in sorted(per_prefix_map):
 
1584
        present_keys.extend(reversed(tsort.topo_sort(per_prefix_map[prefix])))
 
1585
    return present_keys