2620
2620
executable = tree.is_executable(tree_path, file_id)
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))
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
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 = []
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)))
2678
2678
pb.update(gettext('Adding file contents'), count + offset, total)
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)
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()