181
181
__slots__ = ['_weave', '_parents', '_sha1s', '_names', '_name_map',
184
def __init__(self, weave_name=None):
184
def __init__(self, weave_name=None, access_mode='w'):
185
super(Weave, self).__init__(access_mode)
186
187
self._parents = []
279
280
"""Please use Weave.clone_text now."""
280
281
return self.clone_text(new_rev_id, old_rev_id, parents)
282
def add_lines(self, version_id, parents, lines):
283
def _add_lines(self, version_id, parents, lines):
283
284
"""See VersionedFile.add_lines."""
284
285
return self._add(version_id, lines, map(self._lookup, parents))
407
408
offset += 2 + (j2 - j1)
408
409
return new_version
410
def clone_text(self, new_version_id, old_version_id, parents):
411
def _clone_text(self, new_version_id, old_version_id, parents):
411
412
"""See VersionedFile.clone_text."""
412
413
old_lines = self.get_text(old_version_id)
413
414
self.add_lines(new_version_id, parents, old_lines)
881
882
WEAVE_SUFFIX = '.weave'
883
def __init__(self, name, transport, mode=None, create=False):
884
def __init__(self, name, transport, filemode=None, create=False, access_mode='w'):
884
885
"""Create a WeaveFile.
886
887
:param create: If not True, only open an existing knit.
888
super(WeaveFile, self).__init__(name)
889
super(WeaveFile, self).__init__(name, access_mode)
889
890
self._transport = transport
891
self._filemode = filemode
892
893
_read_weave_v5(self._transport.get(name + WeaveFile.WEAVE_SUFFIX), self)
893
894
except errors.NoSuchFile:
896
897
# new file, save it
899
def add_lines(self, version_id, parents, lines):
900
def _add_lines(self, version_id, parents, lines):
900
901
"""Add a version and save the weave."""
901
super(WeaveFile, self).add_lines(version_id, parents, lines)
902
super(WeaveFile, self)._add_lines(version_id, parents, lines)
905
def _clone_text(self, new_version_id, old_version_id, parents):
906
"""See VersionedFile.clone_text."""
907
super(WeaveFile, self)._clone_text(new_version_id, old_version_id, parents)
904
910
def copy_to(self, name, transport):
905
911
"""See VersionedFile.copy_to()."""
906
912
# as we are all in memory always, just serialise to the new place.
908
914
write_weave_v5(self, sio)
910
transport.put(name + WeaveFile.WEAVE_SUFFIX, sio, self._mode)
916
transport.put(name + WeaveFile.WEAVE_SUFFIX, sio, self._filemode)
912
def create_empty(self, name, transport, mode=None):
913
return WeaveFile(name, transport, mode, create=True)
918
def create_empty(self, name, transport, filemode=None):
919
return WeaveFile(name, transport, filemode, create=True)
916
922
"""Save the weave."""
923
self._check_write_ok()
918
925
write_weave_v5(self, sio)
920
927
self._transport.put(self._weave_name + WeaveFile.WEAVE_SUFFIX,
925
932
def get_suffixes():