~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/upgrade.py

  • Committer: Martin Packman
  • Date: 2012-01-05 09:50:04 UTC
  • mfrom: (6424 +trunk)
  • mto: This revision was merged to the branch mainline in revision 6426.
  • Revision ID: martin.packman@canonical.com-20120105095004-mia9xb7y0efmto0v
Merge bzr.dev to resolve conflicts in bzrlib.builtins

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""bzr upgrade logic."""
18
18
 
 
19
from __future__ import absolute_import
19
20
 
20
21
from bzrlib import (
21
22
    errors,
23
24
    ui,
24
25
    urlutils,
25
26
    )
26
 
from bzrlib.bzrdir import (
27
 
    BzrDir,
 
27
from bzrlib.controldir import (
 
28
    ControlDir,
28
29
    format_registry,
29
30
    )
 
31
from bzrlib.i18n import gettext
30
32
from bzrlib.remote import RemoteBzrDir
31
33
 
32
34
 
53
55
        if control_dir is not None:
54
56
            self.bzrdir = control_dir
55
57
        else:
56
 
            self.bzrdir = BzrDir.open_unsupported(url)
 
58
            self.bzrdir = ControlDir.open_unsupported(url)
57
59
        if isinstance(self.bzrdir, RemoteBzrDir):
58
60
            self.bzrdir._ensure_real()
59
61
            self.bzrdir = self.bzrdir._real_bzrdir
71
73
        try:
72
74
            branch = self.bzrdir.open_branch()
73
75
            if branch.user_url != self.bzrdir.user_url:
74
 
                ui.ui_factory.note(
 
76
                ui.ui_factory.note(gettext(
75
77
                    'This is a checkout. The branch (%s) needs to be upgraded'
76
 
                    ' separately.' % (urlutils.unescape_for_display(
 
78
                    ' separately.') % (urlutils.unescape_for_display(
77
79
                        branch.user_url, 'utf-8')))
78
80
            del branch
79
81
        except (errors.NotBranchError, errors.IncompatibleRepositories):
95
97
        if not self.bzrdir.needs_format_conversion(format):
96
98
            raise errors.UpToDateFormat(self.bzrdir._format)
97
99
        if not self.bzrdir.can_convert_format():
98
 
            raise errors.BzrError("cannot upgrade from bzrdir format %s" %
 
100
            raise errors.BzrError(gettext("cannot upgrade from bzrdir format %s") %
99
101
                           self.bzrdir._format)
100
102
        self.bzrdir.check_conversion_target(format)
101
 
        ui.ui_factory.note('starting upgrade of %s' % 
 
103
        ui.ui_factory.note(gettext('starting upgrade of %s') % 
102
104
            urlutils.unescape_for_display(self.transport.base, 'utf-8'))
103
105
 
104
106
        self.backup_oldpath, self.backup_newpath = self.bzrdir.backup_bzrdir()
105
107
        while self.bzrdir.needs_format_conversion(format):
106
108
            converter = self.bzrdir._format.get_converter(format)
107
109
            self.bzrdir = converter.convert(self.bzrdir, None)
108
 
        ui.ui_factory.note('finished')
 
110
        ui.ui_factory.note(gettext('finished'))
109
111
 
110
112
    def clean_up(self):
111
113
        """Clean-up after a conversion.
115
117
        transport = self.transport
116
118
        backup_relpath = transport.relpath(self.backup_newpath)
117
119
        child_pb = ui.ui_factory.nested_progress_bar()
118
 
        child_pb.update('Deleting backup.bzr')
 
120
        child_pb.update(gettext('Deleting backup.bzr'))
119
121
        try:
120
122
            transport.delete_tree(backup_relpath)
121
123
        finally:
138
140
    :param dry_run: show what would happen but don't actually do any upgrades
139
141
    :return: the list of exceptions encountered
140
142
    """
141
 
    control_dirs = [BzrDir.open_unsupported(url)]
 
143
    control_dirs = [ControlDir.open_unsupported(url)]
142
144
    attempted, succeeded, exceptions = smart_upgrade(control_dirs,
143
145
        format, clean_up=clean_up, dry_run=dry_run)
144
146
    if len(attempted) > 1:
146
148
        succeeded_count = len(succeeded)
147
149
        failed_count = attempted_count - succeeded_count
148
150
        ui.ui_factory.note(
149
 
            '\nSUMMARY: %d upgrades attempted, %d succeeded, %d failed'
150
 
            % (attempted_count, succeeded_count, failed_count))
 
151
            gettext('\nSUMMARY: {0} upgrades attempted, {1} succeeded,'\
 
152
                    ' {2} failed').format(
 
153
                     attempted_count, succeeded_count, failed_count))
151
154
    return exceptions
152
155
 
153
156
 
202
205
    succeeded, exceptions = _convert_items([control_dir], format, clean_up,
203
206
                                           dry_run)
204
207
    if succeeded and dependents:
205
 
        ui.ui_factory.note('Found %d dependent branches - upgrading ...'
 
208
        ui.ui_factory.note(gettext('Found %d dependent branches - upgrading ...')
206
209
                           % (len(dependents),))
207
210
        # Convert dependent branches
208
211
        branch_cdirs = [b.bzrdir for b in dependents]
270
273
    succeeded = []
271
274
    exceptions = []
272
275
    child_pb = ui.ui_factory.nested_progress_bar()
273
 
    child_pb.update('Upgrading bzrdirs', 0, len(items))
 
276
    child_pb.update(gettext('Upgrading bzrdirs'), 0, len(items))
274
277
    for i, control_dir in enumerate(items):
275
278
        # Do the conversion
276
279
        location = control_dir.root_transport.base
277
280
        bzr_object, bzr_label = _get_object_and_label(control_dir)
278
281
        type_label = label or bzr_label
279
 
        child_pb.update("Upgrading %s" % (type_label), i+1, len(items))
280
 
        ui.ui_factory.note('Upgrading %s %s ...' % (type_label, 
 
282
        child_pb.update(gettext("Upgrading %s") % (type_label), i+1, len(items))
 
283
        ui.ui_factory.note(gettext('Upgrading {0} {1} ...').format(type_label, 
281
284
            urlutils.unescape_for_display(location, 'utf-8'),))
282
285
        try:
283
286
            if not dry_run:
284
287
                cv = Convert(control_dir=control_dir, format=format)
 
288
        except errors.UpToDateFormat, ex:
 
289
            ui.ui_factory.note(str(ex))
 
290
            succeeded.append(control_dir)
 
291
            continue
285
292
        except Exception, ex:
286
293
            trace.warning('conversion error: %s' % ex)
287
294
            exceptions.append(ex)
291
298
        succeeded.append(control_dir)
292
299
        if clean_up:
293
300
            try:
294
 
                ui.ui_factory.note('Removing backup ...')
 
301
                ui.ui_factory.note(gettext('Removing backup ...'))
295
302
                if not dry_run:
296
303
                    cv.clean_up()
297
304
            except Exception, ex:
298
 
                trace.warning('failed to clean-up %s: %s' % (location, ex))
 
305
                trace.warning(gettext('failed to clean-up {0}: {1}') % (location, ex))
299
306
                exceptions.append(ex)
300
307
 
301
308
    child_pb.finished()