Example #1
0
 def set_parent_ids(self, revision_ids, allow_leftmost_as_ghost=False):
     """See MutableTree.set_parent_trees()."""
     for revision_id in revision_ids:
         _mod_revision.check_not_reserved_id(revision_id)
     if len(revision_ids) == 0:
         self._parent_ids = []
         self._branch_revision_id = _mod_revision.NULL_REVISION
     else:
         self._parent_ids = revision_ids
         self._branch_revision_id = revision_ids[0]
     self._allow_leftmost_as_ghost = allow_leftmost_as_ghost
     self._set_basis()
 def set_parent_ids(self, revision_ids, allow_leftmost_as_ghost=False):
     """See MutableTree.set_parent_trees()."""
     for revision_id in revision_ids:
         _mod_revision.check_not_reserved_id(revision_id)
     if len(revision_ids) == 0:
         self._parent_ids = []
         self._branch_revision_id = _mod_revision.NULL_REVISION
     else:
         self._parent_ids = revision_ids
         self._branch_revision_id = revision_ids[0]
     self._allow_leftmost_as_ghost = allow_leftmost_as_ghost
     self._set_basis()
Example #3
0
 def _add_inventory(self, revision_id, inv, parents, parent_invs):
     """See RevisionStore._add_inventory."""
     # Code taken from bzrlib.repository.add_inventory
     assert self.repo.is_in_write_group()
     _mod_revision.check_not_reserved_id(revision_id)
     assert inv.revision_id is None or inv.revision_id == revision_id, \
         "Mismatch between inventory revision" \
         " id and insertion revid (%r, %r)" % (inv.revision_id, revision_id)
     assert inv.root is not None
     inv_lines = self.repo._serialise_inventory_to_lines(inv)
     inv_vf = self.repo.get_inventory_weave()
     sha1, num_bytes, parent_text = self._inventory_add_lines(inv_vf,
         revision_id, parents, inv_lines, self.inv_parent_texts)
     self.inv_parent_texts[revision_id] = parent_text
     return sha1
Example #4
0
 def _pack_revision(self, rev):
     """Revision object -> xml tree"""
     # For the XML format, we need to write them as Unicode rather than as
     # utf-8 strings. So that cElementTree can handle properly escaping
     # them.
     decode_utf8 = cache_utf8.decode
     revision_id = rev.revision_id
     if isinstance(revision_id, str):
         revision_id = decode_utf8(revision_id)
     format_num = self.format_num
     if self.revision_format_num is not None:
         format_num = self.revision_format_num
     root = Element(
         'revision',
         committer=rev.committer,
         timestamp='%.3f' % rev.timestamp,
         revision_id=revision_id,
         inventory_sha1=rev.inventory_sha1,
         format=format_num,
     )
     if rev.timezone is not None:
         root.set('timezone', str(rev.timezone))
     root.text = '\n'
     msg = SubElement(root, 'message')
     msg.text = rev.message
     msg.tail = '\n'
     if rev.parent_ids:
         pelts = SubElement(root, 'parents')
         pelts.tail = pelts.text = '\n'
         for parent_id in rev.parent_ids:
             _mod_revision.check_not_reserved_id(parent_id)
             p = SubElement(pelts, 'revision_ref')
             p.tail = '\n'
             if isinstance(parent_id, str):
                 parent_id = decode_utf8(parent_id)
             p.set('revision_id', parent_id)
     if rev.properties:
         self._pack_revision_properties(rev, root)
     return root
Example #5
0
 def _pack_revision(self, rev):
     """Revision object -> xml tree"""
     # For the XML format, we need to write them as Unicode rather than as
     # utf-8 strings. So that cElementTree can handle properly escaping
     # them.
     decode_utf8 = cache_utf8.decode
     revision_id = rev.revision_id
     if isinstance(revision_id, str):
         revision_id = decode_utf8(revision_id)
     format_num = self.format_num
     if self.revision_format_num is not None:
         format_num = self.revision_format_num
     root = Element('revision',
                    committer = rev.committer,
                    timestamp = '%.3f' % rev.timestamp,
                    revision_id = revision_id,
                    inventory_sha1 = rev.inventory_sha1,
                    format=format_num,
                    )
     if rev.timezone is not None:
         root.set('timezone', str(rev.timezone))
     root.text = '\n'
     msg = SubElement(root, 'message')
     msg.text = rev.message
     msg.tail = '\n'
     if rev.parent_ids:
         pelts = SubElement(root, 'parents')
         pelts.tail = pelts.text = '\n'
         for parent_id in rev.parent_ids:
             _mod_revision.check_not_reserved_id(parent_id)
             p = SubElement(pelts, 'revision_ref')
             p.tail = '\n'
             if isinstance(parent_id, str):
                 parent_id = decode_utf8(parent_id)
             p.set('revision_id', parent_id)
     if rev.properties:
         self._pack_revision_properties(rev, root)
     return root
Example #6
0
 def _add_revision(self, rev, inv):
     # There's no need to do everything repo.add_revision does and
     # doing so (since bzr.dev 3392) can be pretty slow for long
     # delta chains on inventories. Just do the essentials here ...
     _mod_revision.check_not_reserved_id(rev.revision_id)
     self.repo._revision_store.add_revision(rev, self.repo.get_transaction())