/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: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2018-03-24 12:34:34 UTC
  • mfrom: (6874.2.9 iter-files-bytes)
  • Revision ID: breezy.the.bot@gmail.com-20180324123434-zogy2xskr96vv5xm
Change Tree.iter_files_bytes() to take a (path, identifier) list rather than a (file_id, identifier) list.

Merged from https://code.launchpad.net/~jelmer/brz/iter-files-bytes/+merge/340578

Show diffs side-by-side

added added

removed removed

Lines of Context:
2620
2620
                    executable = tree.is_executable(tree_path, file_id)
2621
2621
                    if executable:
2622
2622
                        tt.set_executability(executable, trans_id)
2623
 
                    trans_data = (trans_id, tree_path, entry.text_sha1)
2624
 
                    deferred_contents.append((file_id, trans_data))
 
2623
                    trans_data = (trans_id, file_id, tree_path, entry.text_sha1)
 
2624
                    deferred_contents.append((tree_path, trans_data))
2625
2625
                else:
2626
2626
                    file_trans_id[file_id] = new_by_entry(
2627
2627
                            tree_path, tt, entry, parent_id, tree)
2661
2661
        new_desired_files = desired_files
2662
2662
    else:
2663
2663
        iter = accelerator_tree.iter_changes(tree, include_unchanged=True)
2664
 
        unchanged = [(f, p[1]) for (f, p, c, v, d, n, k, e)
 
2664
        unchanged = [(p[0], p[1]) for (f, p, c, v, d, n, k, e)
2665
2665
                     in iter if not (c or e[0] != e[1])]
2666
2666
        if accelerator_tree.supports_content_filtering():
2667
 
            unchanged = [(f, p) for (f, p) in unchanged
2668
 
                         if not next(accelerator_tree.iter_search_rules([p]))]
 
2667
            unchanged = [(tp, ap) for (tp, ap) in unchanged
 
2668
                         if not next(accelerator_tree.iter_search_rules([ap]))]
2669
2669
        unchanged = dict(unchanged)
2670
2670
        new_desired_files = []
2671
2671
        count = 0
2672
 
        for file_id, (trans_id, tree_path, text_sha1) in desired_files:
2673
 
            accelerator_path = unchanged.get(file_id)
 
2672
        for unused_tree_path, (trans_id, file_id, tree_path, text_sha1) in desired_files:
 
2673
            accelerator_path = unchanged.get(tree_path)
2674
2674
            if accelerator_path is None:
2675
 
                new_desired_files.append((file_id,
2676
 
                    (trans_id, tree_path, text_sha1)))
 
2675
                new_desired_files.append((tree_path,
 
2676
                    (trans_id, file_id, tree_path, text_sha1)))
2677
2677
                continue
2678
2678
            pb.update(gettext('Adding file contents'), count + offset, total)
2679
2679
            if hardlink:
2695
2695
                        pass
2696
2696
            count += 1
2697
2697
        offset += count
2698
 
    for count, ((trans_id, tree_path, text_sha1), contents) in enumerate(
 
2698
    for count, ((trans_id, file_id, tree_path, text_sha1), contents) in enumerate(
2699
2699
            tree.iter_files_bytes(new_desired_files)):
2700
2700
        if wt.supports_content_filtering():
2701
2701
            filters = wt._content_filter_stack(tree_path)
2937
2937
                    tt.create_symlink(target_tree.get_symlink_target(
2938
2938
                            target_path, file_id), trans_id)
2939
2939
                elif target_kind == 'file':
2940
 
                    deferred_files.append((file_id, (trans_id, mode_id)))
 
2940
                    deferred_files.append((target_path, (trans_id, mode_id, file_id)))
2941
2941
                    if basis_tree is None:
2942
2942
                        basis_tree = working_tree.basis_tree()
2943
2943
                        basis_tree.lock_read()
2972
2972
            if wt_executable != target_executable and target_kind == "file":
2973
2973
                tt.set_executability(target_executable, trans_id)
2974
2974
        if working_tree.supports_content_filtering():
2975
 
            for index, ((trans_id, mode_id), bytes) in enumerate(
 
2975
            for (trans_id, mode_id, file_id), bytes in (
2976
2976
                target_tree.iter_files_bytes(deferred_files)):
2977
 
                file_id = deferred_files[index][0]
2978
2977
                # We're reverting a tree to the target tree so using the
2979
2978
                # target tree to find the file path seems the best choice
2980
2979
                # here IMO - Ian C 27/Oct/2009
2984
2983
                    ContentFilterContext(filter_tree_path, working_tree))
2985
2984
                tt.create_file(bytes, trans_id, mode_id)
2986
2985
        else:
2987
 
            for (trans_id, mode_id), bytes in target_tree.iter_files_bytes(
 
2986
            for (trans_id, mode_id, file_id), bytes in target_tree.iter_files_bytes(
2988
2987
                deferred_files):
2989
2988
                tt.create_file(bytes, trans_id, mode_id)
2990
2989
        tt.fixup_new_roots()