/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/plugins/weave_fmt/bzrdir.py

  • Committer: Jelmer Vernooij
  • Date: 2017-06-10 16:40:42 UTC
  • mfrom: (6653.6.7 rename-controldir)
  • mto: This revision was merged to the branch mainline in revision 6690.
  • Revision ID: jelmer@jelmer.uk-20170610164042-zrxqgy2htyduvke2
MergeĀ rename-controldirĀ branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
234
234
 
235
235
    def convert(self, to_convert, pb):
236
236
        """See Converter.convert()."""
237
 
        self.bzrdir = to_convert
 
237
        self.controldir = to_convert
238
238
        if pb is not None:
239
239
            warnings.warn(gettext("pb parameter to convert() is deprecated"))
240
240
        self.pb = ui.ui_factory.nested_progress_bar()
241
241
        try:
242
242
            ui.ui_factory.note(gettext('starting upgrade from format 4 to 5'))
243
 
            if isinstance(self.bzrdir.transport, local.LocalTransport):
244
 
                self.bzrdir.get_workingtree_transport(None).delete('stat-cache')
 
243
            if isinstance(self.controldir.transport, local.LocalTransport):
 
244
                self.controldir.get_workingtree_transport(None).delete('stat-cache')
245
245
            self._convert_to_weaves()
246
 
            return ControlDir.open(self.bzrdir.user_url)
 
246
            return ControlDir.open(self.controldir.user_url)
247
247
        finally:
248
248
            self.pb.finished()
249
249
 
252
252
          'note: upgrade may be faster if all store files are ungzipped first'))
253
253
        try:
254
254
            # TODO permissions
255
 
            stat = self.bzrdir.transport.stat('weaves')
 
255
            stat = self.controldir.transport.stat('weaves')
256
256
            if not S_ISDIR(stat.st_mode):
257
 
                self.bzrdir.transport.delete('weaves')
258
 
                self.bzrdir.transport.mkdir('weaves')
 
257
                self.controldir.transport.delete('weaves')
 
258
                self.controldir.transport.mkdir('weaves')
259
259
        except errors.NoSuchFile:
260
 
            self.bzrdir.transport.mkdir('weaves')
 
260
            self.controldir.transport.mkdir('weaves')
261
261
        # deliberately not a WeaveFile as we want to build it up slowly.
262
262
        self.inv_weave = weave.Weave('inventory')
263
263
        # holds in-memory weaves for all files
264
264
        self.text_weaves = {}
265
 
        self.bzrdir.transport.delete('branch-format')
266
 
        self.branch = self.bzrdir.open_branch()
 
265
        self.controldir.transport.delete('branch-format')
 
266
        self.branch = self.controldir.open_branch()
267
267
        self._convert_working_inv()
268
268
        rev_history = self.branch._revision_history()
269
269
        # to_read is a stack holding the revisions we still need to process;
293
293
        self.branch._transport.put_bytes(
294
294
            'branch-format',
295
295
            BzrDirFormat5().get_format_string(),
296
 
            mode=self.bzrdir._get_file_mode())
 
296
            mode=self.controldir._get_file_mode())
297
297
 
298
298
    def _cleanup_spare_files_after_format4(self):
299
299
        # FIXME working tree upgrade foo.
300
300
        for n in 'merged-patches', 'pending-merged-patches':
301
301
            try:
302
302
                ## assert os.path.getsize(p) == 0
303
 
                self.bzrdir.transport.delete(n)
 
303
                self.controldir.transport.delete(n)
304
304
            except errors.NoSuchFile:
305
305
                pass
306
 
        self.bzrdir.transport.delete_tree('inventory-store')
307
 
        self.bzrdir.transport.delete_tree('text-store')
 
306
        self.controldir.transport.delete_tree('inventory-store')
 
307
        self.controldir.transport.delete_tree('text-store')
308
308
 
309
309
    def _convert_working_inv(self):
310
310
        inv = xml4.serializer_v4.read_inventory(
311
311
                self.branch._transport.get('inventory'))
312
312
        new_inv_xml = xml5.serializer_v5.write_inventory_to_string(inv, working=True)
313
313
        self.branch._transport.put_bytes('inventory', new_inv_xml,
314
 
            mode=self.bzrdir._get_file_mode())
 
314
            mode=self.controldir._get_file_mode())
315
315
 
316
316
    def _write_all_weaves(self):
317
 
        controlweaves = VersionedFileStore(self.bzrdir.transport, prefixed=False,
 
317
        controlweaves = VersionedFileStore(self.controldir.transport, prefixed=False,
318
318
            versionedfile_class=weave.WeaveFile)
319
 
        weave_transport = self.bzrdir.transport.clone('weaves')
 
319
        weave_transport = self.controldir.transport.clone('weaves')
320
320
        weaves = VersionedFileStore(weave_transport, prefixed=False,
321
321
                versionedfile_class=weave.WeaveFile)
322
322
        transaction = WriteTransaction()
336
336
 
337
337
    def _write_all_revs(self):
338
338
        """Write all revisions out in new form."""
339
 
        self.bzrdir.transport.delete_tree('revision-store')
340
 
        self.bzrdir.transport.mkdir('revision-store')
341
 
        revision_transport = self.bzrdir.transport.clone('revision-store')
 
339
        self.controldir.transport.delete_tree('revision-store')
 
340
        self.controldir.transport.mkdir('revision-store')
 
341
        revision_transport = self.controldir.transport.clone('revision-store')
342
342
        # TODO permissions
343
343
        from ...xml5 import serializer_v5
344
344
        from .repository import RevisionTextStore
503
503
 
504
504
    def convert(self, to_convert, pb):
505
505
        """See Converter.convert()."""
506
 
        self.bzrdir = to_convert
 
506
        self.controldir = to_convert
507
507
        pb = ui.ui_factory.nested_progress_bar()
508
508
        try:
509
509
            ui.ui_factory.note(gettext('starting upgrade from format 5 to 6'))
510
510
            self._convert_to_prefixed()
511
 
            return ControlDir.open(self.bzrdir.user_url)
 
511
            return ControlDir.open(self.controldir.user_url)
512
512
        finally:
513
513
            pb.finished()
514
514
 
515
515
    def _convert_to_prefixed(self):
516
516
        from ...store import TransportStore
517
 
        self.bzrdir.transport.delete('branch-format')
 
517
        self.controldir.transport.delete('branch-format')
518
518
        for store_name in ["weaves", "revision-store"]:
519
519
            ui.ui_factory.note(gettext("adding prefixes to %s") % store_name)
520
 
            store_transport = self.bzrdir.transport.clone(store_name)
 
520
            store_transport = self.controldir.transport.clone(store_name)
521
521
            store = TransportStore(store_transport, prefixed=True)
522
522
            for urlfilename in store_transport.list_dir('.'):
523
523
                filename = urlutils.unescape(urlfilename)
535
535
                except errors.NoSuchFile: # catches missing dirs strangely enough
536
536
                    store_transport.mkdir(osutils.dirname(new_name))
537
537
                    store_transport.move(filename, new_name)
538
 
        self.bzrdir.transport.put_bytes(
 
538
        self.controldir.transport.put_bytes(
539
539
            'branch-format',
540
540
            BzrDirFormat6().get_format_string(),
541
 
            mode=self.bzrdir._get_file_mode())
 
541
            mode=self.controldir._get_file_mode())
542
542
 
543
543
 
544
544
class ConvertBzrDir6ToMeta(Converter):
548
548
        """See Converter.convert()."""
549
549
        from .repository import RepositoryFormat7
550
550
        from ...bzr.fullhistory import BzrBranchFormat5
551
 
        self.bzrdir = to_convert
 
551
        self.controldir = to_convert
552
552
        self.pb = ui.ui_factory.nested_progress_bar()
553
553
        self.count = 0
554
554
        self.total = 20 # the steps we know about
555
555
        self.garbage_inventories = []
556
 
        self.dir_mode = self.bzrdir._get_dir_mode()
557
 
        self.file_mode = self.bzrdir._get_file_mode()
 
556
        self.dir_mode = self.controldir._get_dir_mode()
 
557
        self.file_mode = self.controldir._get_file_mode()
558
558
 
559
559
        ui.ui_factory.note(gettext('starting upgrade from format 6 to metadir'))
560
 
        self.bzrdir.transport.put_bytes(
 
560
        self.controldir.transport.put_bytes(
561
561
                'branch-format',
562
562
                "Converting to format 6",
563
563
                mode=self.file_mode)
565
565
        # first off, nuke ancestry.weave, it was never used.
566
566
        try:
567
567
            self.step(gettext('Removing ancestry.weave'))
568
 
            self.bzrdir.transport.delete('ancestry.weave')
 
568
            self.controldir.transport.delete('ancestry.weave')
569
569
        except errors.NoSuchFile:
570
570
            pass
571
571
        # find out whats there
572
572
        self.step(gettext('Finding branch files'))
573
 
        last_revision = self.bzrdir.open_branch().last_revision()
574
 
        bzrcontents = self.bzrdir.transport.list_dir('.')
 
573
        last_revision = self.controldir.open_branch().last_revision()
 
574
        bzrcontents = self.controldir.transport.list_dir('.')
575
575
        for name in bzrcontents:
576
576
            if name.startswith('basis-inventory.'):
577
577
                self.garbage_inventories.append(name)
580
580
                            ('revision-store', True),
581
581
                            ('weaves', True)]
582
582
        self.step(gettext('Upgrading repository') + '  ')
583
 
        self.bzrdir.transport.mkdir('repository', mode=self.dir_mode)
 
583
        self.controldir.transport.mkdir('repository', mode=self.dir_mode)
584
584
        self.make_lock('repository')
585
585
        # we hard code the formats here because we are converting into
586
586
        # the meta format. The meta format upgrader can take this to a
590
590
            self.move_entry('repository', entry)
591
591
 
592
592
        self.step(gettext('Upgrading branch') + '      ')
593
 
        self.bzrdir.transport.mkdir('branch', mode=self.dir_mode)
 
593
        self.controldir.transport.mkdir('branch', mode=self.dir_mode)
594
594
        self.make_lock('branch')
595
595
        self.put_format('branch', BzrBranchFormat5())
596
596
        branch_files = [('revision-history', True),
616
616
            # If some checkout files are there, we may as well get rid of them.
617
617
            for name, mandatory in checkout_files:
618
618
                if name in bzrcontents:
619
 
                    self.bzrdir.transport.delete(name)
 
619
                    self.controldir.transport.delete(name)
620
620
        else:
621
621
            from ...bzr.workingtree_3 import WorkingTreeFormat3
622
622
            self.step(gettext('Upgrading working tree'))
623
 
            self.bzrdir.transport.mkdir('checkout', mode=self.dir_mode)
 
623
            self.controldir.transport.mkdir('checkout', mode=self.dir_mode)
624
624
            self.make_lock('checkout')
625
625
            self.put_format(
626
626
                'checkout', WorkingTreeFormat3())
627
 
            self.bzrdir.transport.delete_multi(
 
627
            self.controldir.transport.delete_multi(
628
628
                self.garbage_inventories, self.pb)
629
629
            for entry in checkout_files:
630
630
                self.move_entry('checkout', entry)
631
631
            if last_revision is not None:
632
 
                self.bzrdir.transport.put_bytes(
 
632
                self.controldir.transport.put_bytes(
633
633
                    'checkout/last-revision', last_revision)
634
 
        self.bzrdir.transport.put_bytes(
 
634
        self.controldir.transport.put_bytes(
635
635
            'branch-format',
636
636
            BzrDirMetaFormat1().get_format_string(),
637
637
            mode=self.file_mode)
638
638
        self.pb.finished()
639
 
        return ControlDir.open(self.bzrdir.user_url)
 
639
        return ControlDir.open(self.controldir.user_url)
640
640
 
641
641
    def make_lock(self, name):
642
642
        """Make a lock for the new control dir name."""
643
643
        self.step(gettext('Make %s lock') % name)
644
 
        ld = lockdir.LockDir(self.bzrdir.transport,
 
644
        ld = lockdir.LockDir(self.controldir.transport,
645
645
                             '%s/lock' % name,
646
646
                             file_modebits=self.file_mode,
647
647
                             dir_modebits=self.dir_mode)
653
653
        mandatory = entry[1]
654
654
        self.step(gettext('Moving %s') % name)
655
655
        try:
656
 
            self.bzrdir.transport.move(name, '%s/%s' % (new_dir, name))
 
656
            self.controldir.transport.move(name, '%s/%s' % (new_dir, name))
657
657
        except errors.NoSuchFile:
658
658
            if mandatory:
659
659
                raise
660
660
 
661
661
    def put_format(self, dirname, format):
662
 
        self.bzrdir.transport.put_bytes('%s/format' % dirname,
 
662
        self.controldir.transport.put_bytes('%s/format' % dirname,
663
663
            format.get_format_string(),
664
664
            self.file_mode)
665
665
 
747
747
    def cloning_metadir(self, require_stacking=False):
748
748
        """Produce a metadir suitable for cloning with."""
749
749
        if require_stacking:
750
 
            return format_registry.make_bzrdir('1.6')
 
750
            return format_registry.make_controldir('1.6')
751
751
        return self._format.__class__()
752
752
 
753
753
    def clone(self, url, revision_id=None, force_new_repo=False,