~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/upgrade.py

  • Committer: Vincent Ladeuil
  • Date: 2008-01-29 15:16:31 UTC
  • mto: (3206.1.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 3207.
  • Revision ID: v.ladeuil+lp@free.fr-20080129151631-vqjd13tb405mobx6
Fix two more leaking tmp dirs, by reworking TransformPreview lock handling.

* bzrlib/tests/test_transform.py:
(TestTransformMerge): Revert previous patch and cleanly call
preview.finalize now that we can.

* bzrlib/tests/test_merge.py:
(TestMerge.test_make_preview_transform): Catch TransformPreview
leak.

* bzrlib/builtins.py:
(cmd_merge._do_preview): Finalize the TransformPreview or the
limbodir will stay in /tmp.

* bzrlib/transform.py:
(TreeTransformBase.__init__): Create the _deletiondir since it's
reffered to by finalize.
(TreeTransformBase.finalize): Delete the dir only if _deletiondir
is set.
(TreeTransform.__init__): Use a temp var for deletiondir and set
the attribute after the base class __init__ has been called.
(TransformPreview.__init__): Read locks the tree since finalize
wants to unlock it (as suggested by Aaron).

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
# change upgrade from .bzr to create a '.bzr-new', then do a bait and switch.
20
20
 
21
21
 
22
 
from bzrlib.bzrdir import ConvertBzrDir4To5, ConvertBzrDir5To6, BzrDir, BzrDirFormat4, BzrDirFormat5
 
22
from bzrlib.bzrdir import ConvertBzrDir4To5, ConvertBzrDir5To6, BzrDir, BzrDirFormat4, BzrDirFormat5, BzrDirFormat
23
23
import bzrlib.errors as errors
24
24
from bzrlib.transport import get_transport
25
25
import bzrlib.ui as ui
54
54
        if not self.bzrdir.can_convert_format():
55
55
            raise errors.BzrError("cannot upgrade from branch format %s" %
56
56
                           self.bzrdir._format)
 
57
        if self.format is None:
 
58
            target_format = BzrDirFormat.get_default_format()
 
59
        else:
 
60
            target_format = self.format
 
61
        self.bzrdir.check_conversion_target(target_format)
57
62
        self.pb.note('starting upgrade of %s', self.transport.base)
58
63
        self._backup_control_dir()
59
64
        while self.bzrdir.needs_format_conversion(self.format):