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

  • Committer: Jelmer Vernooij
  • Date: 2018-03-04 15:59:37 UTC
  • mto: This revision was merged to the branch mainline in revision 6913.
  • Revision ID: jelmer@jelmer.uk-20180304155937-pssy5js0av6hvmba
Make Tree.iter_files_bytes() take paths rather than file_ids.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2638
2638
                    executable = tree.is_executable(tree_path, file_id)
2639
2639
                    if executable:
2640
2640
                        tt.set_executability(executable, trans_id)
2641
 
                    trans_data = (trans_id, tree_path, entry.text_sha1)
2642
 
                    deferred_contents.append((file_id, trans_data))
 
2641
                    trans_data = (trans_id, file_id, tree_path, entry.text_sha1)
 
2642
                    deferred_contents.append((tree_path, trans_data))
2643
2643
                else:
2644
2644
                    file_trans_id[file_id] = new_by_entry(
2645
2645
                            tree_path, tt, entry, parent_id, tree)
2679
2679
        new_desired_files = desired_files
2680
2680
    else:
2681
2681
        iter = accelerator_tree.iter_changes(tree, include_unchanged=True)
2682
 
        unchanged = [(f, p[1]) for (f, p, c, v, d, n, k, e)
 
2682
        unchanged = [(p[0], p[1]) for (f, p, c, v, d, n, k, e)
2683
2683
                     in iter if not (c or e[0] != e[1])]
2684
2684
        if accelerator_tree.supports_content_filtering():
2685
 
            unchanged = [(f, p) for (f, p) in unchanged
2686
 
                         if not next(accelerator_tree.iter_search_rules([p]))]
 
2685
            unchanged = [(tp, ap) for (tp, ap) in unchanged
 
2686
                         if not next(accelerator_tree.iter_search_rules([ap]))]
2687
2687
        unchanged = dict(unchanged)
2688
2688
        new_desired_files = []
2689
2689
        count = 0
2690
 
        for file_id, (trans_id, tree_path, text_sha1) in desired_files:
2691
 
            accelerator_path = unchanged.get(file_id)
 
2690
        for unused_tree_path, (trans_id, file_id, tree_path, text_sha1) in desired_files:
 
2691
            accelerator_path = unchanged.get(tree_path)
2692
2692
            if accelerator_path is None:
2693
 
                new_desired_files.append((file_id,
2694
 
                    (trans_id, tree_path, text_sha1)))
 
2693
                new_desired_files.append((tree_path,
 
2694
                    (trans_id, file_id, tree_path, text_sha1)))
2695
2695
                continue
2696
2696
            pb.update(gettext('Adding file contents'), count + offset, total)
2697
2697
            if hardlink:
2713
2713
                        pass
2714
2714
            count += 1
2715
2715
        offset += count
2716
 
    for count, ((trans_id, tree_path, text_sha1), contents) in enumerate(
 
2716
    for count, ((trans_id, file_id, tree_path, text_sha1), contents) in enumerate(
2717
2717
            tree.iter_files_bytes(new_desired_files)):
2718
2718
        if wt.supports_content_filtering():
2719
2719
            filters = wt._content_filter_stack(tree_path)
2959
2959
                    tt.create_symlink(target_tree.get_symlink_target(
2960
2960
                            target_path, file_id), trans_id)
2961
2961
                elif target_kind == 'file':
2962
 
                    deferred_files.append((file_id, (trans_id, mode_id)))
 
2962
                    deferred_files.append((target_path, (trans_id, mode_id, file_id)))
2963
2963
                    if basis_tree is None:
2964
2964
                        basis_tree = working_tree.basis_tree()
2965
2965
                        basis_tree.lock_read()
2997
2997
            if wt_executable != target_executable and target_kind == "file":
2998
2998
                tt.set_executability(target_executable, trans_id)
2999
2999
        if working_tree.supports_content_filtering():
3000
 
            for index, ((trans_id, mode_id), bytes) in enumerate(
 
3000
            for (trans_id, mode_id, file_id), bytes in (
3001
3001
                target_tree.iter_files_bytes(deferred_files)):
3002
 
                file_id = deferred_files[index][0]
3003
3002
                # We're reverting a tree to the target tree so using the
3004
3003
                # target tree to find the file path seems the best choice
3005
3004
                # here IMO - Ian C 27/Oct/2009
3009
3008
                    ContentFilterContext(filter_tree_path, working_tree))
3010
3009
                tt.create_file(bytes, trans_id, mode_id)
3011
3010
        else:
3012
 
            for (trans_id, mode_id), bytes in target_tree.iter_files_bytes(
 
3011
            for (trans_id, mode_id, file_id), bytes in target_tree.iter_files_bytes(
3013
3012
                deferred_files):
3014
3013
                tt.create_file(bytes, trans_id, mode_id)
3015
3014
        tt.fixup_new_roots()