23
23
from copy import deepcopy
28
revision as _mod_revision,
25
from bzrlib import errors, mutabletree
30
26
from bzrlib.decorators import needs_read_lock, needs_write_lock
31
27
from bzrlib.osutils import sha_file
32
28
from bzrlib.mutabletree import needs_tree_write_lock
68
64
def create_on_branch(branch):
69
65
"""Create a MemoryTree for branch, using the last-revision of branch."""
70
revision_id = _mod_revision.ensure_null(branch.last_revision())
71
if _mod_revision.is_null(revision_id):
73
return MemoryTree(branch, revision_id)
66
return MemoryTree(branch, branch.last_revision())
75
68
def _gather_kinds(self, files, kinds):
76
69
"""See MutableTree._gather_kinds.
83
76
"""See Tree.get_file."""
84
77
return self._file_transport.get(self.id2path(file_id))
86
def get_file_sha1(self, file_id, path=None, stat_value=None):
79
def get_file_sha1(self, file_id, path=None):
87
80
"""See Tree.get_file_sha1()."""
89
82
path = self.id2path(file_id)
90
83
stream = self._file_transport.get(path)
91
84
return sha_file(stream)
93
def _comparison_data(self, entry, path):
94
"""See Tree._comparison_data."""
96
return None, False, None
97
return entry.kind, entry.executable, None
99
def _file_size(self, entry, stat_value):
100
"""See Tree._file_size."""
103
return entry.text_size
106
87
def get_parent_ids(self):
107
88
"""See Tree.get_parent_ids.
242
223
raise errors.NoSuchId(self, file_id)
244
def set_parent_ids(self, revision_ids, allow_leftmost_as_ghost=False):
245
"""See MutableTree.set_parent_trees()."""
246
for revision_id in revision_ids:
247
_mod_revision.check_not_reserved_id(revision_id)
248
if len(revision_ids) == 0:
249
self._parent_ids = []
250
self._basis_tree = self.branch.repository.revision_tree(None)
252
self._parent_ids = revision_ids
253
self._basis_tree = self.branch.repository.revision_tree(
255
self._branch_revision_id = revision_ids[0]
257
225
def set_parent_trees(self, parents_list, allow_leftmost_as_ghost=False):
258
226
"""See MutableTree.set_parent_trees()."""
259
227
if len(parents_list) == 0:
260
228
self._parent_ids = []
261
self._basis_tree = self.branch.repository.revision_tree(None)
229
self._basis_tree = self.branch.repository.revisiontree(None)
263
231
if parents_list[0][1] is None and not allow_leftmost_as_ghost:
264
232
# a ghost in the left most parent
265
233
raise errors.GhostRevisionUnusableHere(parents_list[0][0])
266
234
self._parent_ids = [parent_id for parent_id, tree in parents_list]
267
if parents_list[0][1] is None or parents_list[0][1] == 'null:':
268
import pdb; pdb.set_trace()
269
self._basis_tree = self.branch.repository.revision_tree(None)
235
if parents_list[0][1] is None:
236
self._basis_tree = self.branch.repository.revisiontree(None)
271
238
self._basis_tree = parents_list[0][1]
272
239
self._branch_revision_id = parents_list[0][0]