/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/transform.py

  • Committer: Aaron Bentley
  • Date: 2007-08-21 15:08:57 UTC
  • mfrom: (2738 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2765.
  • Revision ID: abentley@panoramicfeedback.com-20070821150857-qr11vyi8c0dpqspj
Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1285
1285
            tt.trans_id_tree_file_id(wt.get_root_id())
1286
1286
        pb = bzrlib.ui.ui_factory.nested_progress_bar()
1287
1287
        try:
 
1288
            deferred_contents = []
1288
1289
            for num, (tree_path, entry) in \
1289
1290
                enumerate(tree.inventory.iter_entries_by_dir()):
1290
 
                pb.update("Building tree", num, len(tree.inventory))
 
1291
                pb.update("Building tree", num - len(deferred_contents),
 
1292
                          len(tree.inventory))
1291
1293
                if entry.parent_id is None:
1292
1294
                    continue
1293
1295
                reparent = False
1316
1318
                        'entry %s parent id %r is not in file_trans_id %r'
1317
1319
                        % (entry, entry.parent_id, file_trans_id))
1318
1320
                parent_id = file_trans_id[entry.parent_id]
1319
 
                file_trans_id[file_id] = new_by_entry(tt, entry, parent_id,
1320
 
                                                      tree)
 
1321
                if entry.kind == 'file':
 
1322
                    # We *almost* replicate new_by_entry, so that we can defer
 
1323
                    # getting the file text, and get them all at once.
 
1324
                    trans_id = tt.create_path(entry.name, parent_id)
 
1325
                    file_trans_id[file_id] = trans_id
 
1326
                    tt.version_file(entry.file_id, trans_id)
 
1327
                    executable = tree.is_executable(entry.file_id, tree_path)
 
1328
                    if executable is not None:
 
1329
                        tt.set_executability(executable, trans_id)
 
1330
                    deferred_contents.append((entry.file_id, trans_id))
 
1331
                else:
 
1332
                    file_trans_id[file_id] = new_by_entry(tt, entry, parent_id,
 
1333
                                                          tree)
1321
1334
                if reparent:
1322
1335
                    new_trans_id = file_trans_id[file_id]
1323
1336
                    old_parent = tt.trans_id_tree_path(tree_path)
1324
1337
                    _reparent_children(tt, old_parent, new_trans_id)
 
1338
            for num, (trans_id, bytes) in enumerate(
 
1339
                tree.iter_files_bytes(deferred_contents)):
 
1340
                tt.create_file(bytes, trans_id)
 
1341
                pb.update('Adding file contents',
 
1342
                          (num + len(tree.inventory) - len(deferred_contents)),
 
1343
                          len(tree.inventory))
1325
1344
        finally:
1326
1345
            pb.finished()
1327
1346
        pp.next_phase()
1579
1598
        skip_root = False
1580
1599
    basis_tree = None
1581
1600
    try:
 
1601
        deferred_files = []
1582
1602
        for id_num, (file_id, path, changed_content, versioned, parent, name,
1583
1603
                kind, executable) in enumerate(change_list):
1584
1604
            if skip_root and file_id[0] is not None and parent[0] is None:
1624
1644
                    tt.create_symlink(target_tree.get_symlink_target(file_id),
1625
1645
                                      trans_id)
1626
1646
                elif kind[1] == 'file':
1627
 
                    tt.create_file(target_tree.get_file_lines(file_id),
1628
 
                                   trans_id, mode_id)
 
1647
                    deferred_files.append((file_id, (trans_id, mode_id)))
1629
1648
                    if basis_tree is None:
1630
1649
                        basis_tree = working_tree.basis_tree()
1631
1650
                        basis_tree.lock_read()
1652
1671
                    name[1], tt.trans_id_file_id(parent[1]), trans_id)
1653
1672
            if executable[0] != executable[1] and kind[1] == "file":
1654
1673
                tt.set_executability(executable[1], trans_id)
 
1674
        for (trans_id, mode_id), bytes in target_tree.iter_files_bytes(
 
1675
            deferred_files):
 
1676
            tt.create_file(bytes, trans_id, mode_id)
1655
1677
    finally:
1656
1678
        if basis_tree is not None:
1657
1679
            basis_tree.unlock()