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