616
615
# should probably put it back with the previous ID.
617
616
# the read and write working inventory should not occur in this
618
617
# function - they should be part of lock_write and unlock.
619
inv = self.read_working_inventory()
620
619
for f, file_id, kind in zip(files, ids, kinds):
621
620
assert kind is not None
622
621
if file_id is None:
625
624
file_id = osutils.safe_file_id(file_id)
626
625
inv.add_path(f, kind=kind, file_id=file_id)
627
self._write_inventory(inv)
626
self._inventory_is_modified = True
629
628
@needs_tree_write_lock
630
629
def _gather_kinds(self, files, kinds):
1972
1971
raise NotImplementedError(self.unlock)
1973
def update(self, change_reporter=None):
1975
1974
"""Update a working tree along its branch.
1977
1976
This will update the branch if its bound too, which means we have
2007
2006
old_tip = self.branch.update()
2010
return self._update_tree(old_tip)
2009
return self._update_tree(old_tip, change_reporter)
2014
2013
@needs_tree_write_lock
2015
def _update_tree(self, old_tip=None):
2014
def _update_tree(self, old_tip=None, change_reporter=None):
2016
2015
"""Update a tree to the master branch.
2018
2017
:param old_tip: if supplied, the previous tip revision the branch,
2772
2773
# and not independently creatable, so are not registered.
2773
2774
_legacy_formats = [WorkingTreeFormat2(),
2777
class WorkingTreeTestProviderAdapter(object):
2778
"""A tool to generate a suite testing multiple workingtree formats at once.
2780
This is done by copying the test once for each transport and injecting
2781
the transport_server, transport_readonly_server, and workingtree_format
2782
classes into each copy. Each copy is also given a new id() to make it
2786
def __init__(self, transport_server, transport_readonly_server, formats):
2787
self._transport_server = transport_server
2788
self._transport_readonly_server = transport_readonly_server
2789
self._formats = formats
2791
def _clone_test(self, test, bzrdir_format, workingtree_format, variation):
2792
"""Clone test for adaption."""
2793
new_test = deepcopy(test)
2794
new_test.transport_server = self._transport_server
2795
new_test.transport_readonly_server = self._transport_readonly_server
2796
new_test.bzrdir_format = bzrdir_format
2797
new_test.workingtree_format = workingtree_format
2798
def make_new_test_id():
2799
new_id = "%s(%s)" % (test.id(), variation)
2800
return lambda: new_id
2801
new_test.id = make_new_test_id()
2804
def adapt(self, test):
2805
from bzrlib.tests import TestSuite
2806
result = TestSuite()
2807
for workingtree_format, bzrdir_format in self._formats:
2808
new_test = self._clone_test(
2811
workingtree_format, workingtree_format.__class__.__name__)
2812
result.addTest(new_test)