Exemple #1
0
    def initialize(self,
                   a_controldir,
                   name=None,
                   repository=None,
                   append_revisions_only=None):
        """Create a branch of this format in a_controldir."""
        super(LoomFormatMixin,
              self).initialize(a_controldir,
                               name=name,
                               repository=repository,
                               append_revisions_only=append_revisions_only)

        branch_transport = a_controldir.get_branch_transport(self)
        files = []
        state = loom_state.LoomState()
        writer = loom_io.LoomStateWriter(state)
        state_stream = BytesIO()
        writer.write(state_stream)
        state_stream.seek(0)
        files.append(('last-loom', state_stream))
        control_files = breezy.lockable_files.LockableFiles(
            branch_transport, 'lock', breezy.lockdir.LockDir)
        control_files.lock_write()
        try:
            for filename, stream in files:
                branch_transport.put_file(filename, stream)
        finally:
            control_files.unlock()
        return self.open(a_controldir, _found=True, name=name)
Exemple #2
0
 def _set_last_loom(self, state):
     """Record state to the last-loom control file."""
     stream = BytesIO()
     writer = loom_io.LoomStateWriter(state)
     writer.write(stream)
     stream.seek(0)
     self._transport.put_file('last-loom', stream)
Exemple #3
0
    def take_over(self, branch):
        """Take an existing breezy branch over into Loom format.

        This currently cannot convert branches to Loom format unless they are
        in Branch 5 format.

        The conversion takes effect when the branch is next opened.
        """
        assert branch._format.__class__ is self._parent_classs
        branch._transport.put_bytes('format', self.get_format_string())
        state = loom_state.LoomState()
        writer = loom_io.LoomStateWriter(state)
        state_stream = BytesIO()
        writer.write(state_stream)
        state_stream.seek(0)
        branch._transport.put_file('last-loom', state_stream)
Exemple #4
0
 def test_reader_constructor(self):
     # make a state
     state = loom_state.LoomState()
     state.set_threads([('name', b'rev', [None, None]),
                        ('dangerous name', b'rev2', [None, None])])
     state.set_parents([b'bar', b'am'])
     stream = BytesIO()
     writer = loom_io.LoomStateWriter(state)
     writer.write(stream)
     # creating state from a serialised loom
     stream.seek(0)
     reader = loom_io.LoomStateReader(stream)
     state = loom_state.LoomState(reader)
     self.assertEqual([b'bar', b'am'], state.get_parents())
     self.assertEqual([('name', b'rev', [None, None]),
                       ('dangerous name', b'rev2', [None, None])],
                      state.get_threads())
     self.assertEqual(b'bar', state.get_basis_revision_id())
 def assertWritesStateCorrectly(self, expected_stream, state):
     """Write state to a stream and check it against expected_stream."""
     writer = loom_io.LoomStateWriter(state)
     stream = BytesIO()
     writer.write(stream)
     self.assertEqual(expected_stream, stream.getvalue())
 def test_writer_constructors(self):
     writer = loom_io.LoomWriter()
     state = loom_state.LoomState()
     writer = loom_io.LoomStateWriter(state)