442
440
def version_file(self, file_id, trans_id):
443
441
"""Schedule a file to become versioned."""
444
assert file_id is not None
445
444
unique_add(self._new_id, trans_id, file_id)
446
445
unique_add(self._r_new_id, file_id, trans_id)
1770
1766
new_conflicts = set()
1771
1767
for c_type, conflict in ((c[0], c) for c in conflicts):
1772
1768
# Anything but a 'duplicate' would indicate programmer error
1773
assert c_type == 'duplicate', c_type
1769
if c_type != 'duplicate':
1770
raise AssertionError(c_type)
1774
1771
# Now figure out which is new and which is old
1775
1772
if tt.new_contents(conflict[1]):
1776
1773
new_file = conflict[1]
1834
1831
tt.set_executability(entry.executable, trans_id)
1837
@deprecated_function(zero_fifteen)
1838
def find_interesting(working_tree, target_tree, filenames):
1839
"""Find the ids corresponding to specified filenames.
1841
Deprecated: Please use tree1.paths2ids(filenames, [tree2]).
1843
working_tree.lock_read()
1845
target_tree.lock_read()
1847
return working_tree.paths2ids(filenames, [target_tree])
1849
target_tree.unlock()
1851
working_tree.unlock()
1854
@deprecated_function(zero_ninety)
1855
def change_entry(tt, file_id, working_tree, target_tree,
1856
trans_id_file_id, backups, trans_id, by_parent):
1857
"""Replace a file_id's contents with those from a target tree."""
1858
if file_id is None and target_tree is None:
1859
# skip the logic altogether in the deprecation test
1861
e_trans_id = trans_id_file_id(file_id)
1862
entry = target_tree.inventory[file_id]
1863
has_contents, contents_mod, meta_mod, = _entry_changes(file_id, entry,
1866
mode_id = e_trans_id
1869
tt.delete_contents(e_trans_id)
1871
parent_trans_id = trans_id_file_id(entry.parent_id)
1872
backup_name = get_backup_name(entry, by_parent,
1873
parent_trans_id, tt)
1874
tt.adjust_path(backup_name, parent_trans_id, e_trans_id)
1875
tt.unversion_file(e_trans_id)
1876
e_trans_id = tt.create_path(entry.name, parent_trans_id)
1877
tt.version_file(file_id, e_trans_id)
1878
trans_id[file_id] = e_trans_id
1879
create_by_entry(tt, entry, target_tree, e_trans_id, mode_id=mode_id)
1880
create_entry_executability(tt, entry, e_trans_id)
1883
tt.set_executability(entry.executable, e_trans_id)
1884
if tt.final_name(e_trans_id) != entry.name:
1887
parent_id = tt.final_parent(e_trans_id)
1888
parent_file_id = tt.final_file_id(parent_id)
1889
if parent_file_id != entry.parent_id:
1894
parent_trans_id = trans_id_file_id(entry.parent_id)
1895
tt.adjust_path(entry.name, parent_trans_id, e_trans_id)
1898
1834
def get_backup_name(entry, by_parent, parent_trans_id, tt):
1899
1835
return _get_backup_name(entry.name, by_parent, parent_trans_id, tt)
2048
1984
# preserve the execute bit when backing up
2049
1985
if keep_content and executable[0] == executable[1]:
2050
1986
tt.set_executability(executable[1], trans_id)
2052
assert kind[1] is None
1987
elif kind[1] is not None:
1988
raise AssertionError(kind[1])
2053
1989
if versioned == (False, True):
2054
1990
tt.version_file(file_id, trans_id)
2055
1991
if versioned == (True, False):