~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/upgrade.py

  • Committer: Jelmer Vernooij
  • Date: 2011-02-11 17:58:56 UTC
  • mto: This revision was merged to the branch mainline in revision 5662.
  • Revision ID: jelmer@samba.org-20110211175856-alncdirjmi75qr67
Add 'WorkingTreeFormat.missing_parent_conflicts' flag to use in tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
    errors,
22
22
    trace,
23
23
    ui,
24
 
    urlutils,
25
24
    )
26
25
from bzrlib.bzrdir import (
27
26
    BzrDir,
28
27
    format_registry,
29
28
    )
30
 
from bzrlib.i18n import gettext
31
29
from bzrlib.remote import RemoteBzrDir
32
30
 
33
31
 
72
70
        try:
73
71
            branch = self.bzrdir.open_branch()
74
72
            if branch.user_url != self.bzrdir.user_url:
75
 
                ui.ui_factory.note(gettext(
 
73
                ui.ui_factory.note(
76
74
                    'This is a checkout. The branch (%s) needs to be upgraded'
77
 
                    ' separately.') % (urlutils.unescape_for_display(
78
 
                        branch.user_url, 'utf-8')))
 
75
                    ' separately.' % (branch.user_url,))
79
76
            del branch
80
77
        except (errors.NotBranchError, errors.IncompatibleRepositories):
81
78
            # might not be a format we can open without upgrading; see e.g.
96
93
        if not self.bzrdir.needs_format_conversion(format):
97
94
            raise errors.UpToDateFormat(self.bzrdir._format)
98
95
        if not self.bzrdir.can_convert_format():
99
 
            raise errors.BzrError(gettext("cannot upgrade from bzrdir format %s") %
 
96
            raise errors.BzrError("cannot upgrade from bzrdir format %s" %
100
97
                           self.bzrdir._format)
101
98
        self.bzrdir.check_conversion_target(format)
102
 
        ui.ui_factory.note(gettext('starting upgrade of %s') % 
103
 
            urlutils.unescape_for_display(self.transport.base, 'utf-8'))
 
99
        ui.ui_factory.note('starting upgrade of %s' % self.transport.base)
104
100
 
105
101
        self.backup_oldpath, self.backup_newpath = self.bzrdir.backup_bzrdir()
106
102
        while self.bzrdir.needs_format_conversion(format):
107
103
            converter = self.bzrdir._format.get_converter(format)
108
104
            self.bzrdir = converter.convert(self.bzrdir, None)
109
 
        ui.ui_factory.note(gettext('finished'))
 
105
        ui.ui_factory.note('finished')
110
106
 
111
107
    def clean_up(self):
112
108
        """Clean-up after a conversion.
116
112
        transport = self.transport
117
113
        backup_relpath = transport.relpath(self.backup_newpath)
118
114
        child_pb = ui.ui_factory.nested_progress_bar()
119
 
        child_pb.update(gettext('Deleting backup.bzr'))
 
115
        child_pb.update('Deleting backup.bzr')
120
116
        try:
121
117
            transport.delete_tree(backup_relpath)
122
118
        finally:
147
143
        succeeded_count = len(succeeded)
148
144
        failed_count = attempted_count - succeeded_count
149
145
        ui.ui_factory.note(
150
 
            gettext('\nSUMMARY: {0} upgrades attempted, {1} succeeded,'\
151
 
                    ' {2} failed').format(
152
 
                     attempted_count, succeeded_count, failed_count))
 
146
            '\nSUMMARY: %d upgrades attempted, %d succeeded, %d failed'
 
147
            % (attempted_count, succeeded_count, failed_count))
153
148
    return exceptions
154
149
 
155
150
 
204
199
    succeeded, exceptions = _convert_items([control_dir], format, clean_up,
205
200
                                           dry_run)
206
201
    if succeeded and dependents:
207
 
        ui.ui_factory.note(gettext('Found %d dependent branches - upgrading ...')
 
202
        ui.ui_factory.note('Found %d dependent branches - upgrading ...'
208
203
                           % (len(dependents),))
209
204
        # Convert dependent branches
210
205
        branch_cdirs = [b.bzrdir for b in dependents]
225
220
def _get_object_and_label(control_dir):
226
221
    """Return the primary object and type label for a control directory.
227
222
 
228
 
    :return: object, label where:
229
 
      * object is a Branch, Repository or WorkingTree and
230
 
      * label is one of:
231
 
        * branch            - a branch
232
 
        * repository        - a repository
233
 
        * tree              - a lightweight checkout
 
223
    :return: object, label where
 
224
      object is a Branch, Repository or WorkingTree and
 
225
      label is one of:
 
226
        branch            - a branch
 
227
        repository        - a repository
 
228
        tree              - a lightweight checkout
234
229
    """
235
230
    try:
236
231
        try:
272
267
    succeeded = []
273
268
    exceptions = []
274
269
    child_pb = ui.ui_factory.nested_progress_bar()
275
 
    child_pb.update(gettext('Upgrading bzrdirs'), 0, len(items))
 
270
    child_pb.update('Upgrading bzrdirs', 0, len(items))
276
271
    for i, control_dir in enumerate(items):
277
272
        # Do the conversion
278
273
        location = control_dir.root_transport.base
279
274
        bzr_object, bzr_label = _get_object_and_label(control_dir)
280
275
        type_label = label or bzr_label
281
 
        child_pb.update(gettext("Upgrading %s") % (type_label), i+1, len(items))
282
 
        ui.ui_factory.note(gettext('Upgrading {0} {1} ...').format(type_label, 
283
 
            urlutils.unescape_for_display(location, 'utf-8'),))
 
276
        child_pb.update("Upgrading %s" % (type_label), i+1, len(items))
 
277
        ui.ui_factory.note('Upgrading %s %s ...' % (type_label, location,))
284
278
        try:
285
279
            if not dry_run:
286
280
                cv = Convert(control_dir=control_dir, format=format)
293
287
        succeeded.append(control_dir)
294
288
        if clean_up:
295
289
            try:
296
 
                ui.ui_factory.note(gettext('Removing backup ...'))
 
290
                ui.ui_factory.note('Removing backup ...')
297
291
                if not dry_run:
298
292
                    cv.clean_up()
299
293
            except Exception, ex:
300
 
                trace.warning(gettext('failed to clean-up {0}: {1}') % (location, ex))
 
294
                trace.warning('failed to clean-up %s: %s' % (location, ex))
301
295
                exceptions.append(ex)
302
296
 
303
297
    child_pb.finished()