~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/code/model/branchjob.py

[r=Edwin][ui=None] BranchUpgradeJob refactoring for 2.0 changes,
        UI for requesting an upgrade.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
import tempfile
20
20
 
21
21
from bzrlib.branch import Branch as BzrBranch
22
 
from bzrlib.bzrdir import BzrDirMetaFormat1
23
22
from bzrlib.log import log_formatter, show_log
24
23
from bzrlib.diff import show_diff_trees
25
24
from bzrlib.revision import NULL_REVISION
45
44
from canonical.database.enumcol import EnumCol
46
45
from canonical.database.sqlbase import SQLBase
47
46
from canonical.launchpad.webapp import canonical_url, errorlog
48
 
from lp.code.bzr import (
49
 
    BRANCH_FORMAT_UPGRADE_PATH, REPOSITORY_FORMAT_UPGRADE_PATH)
50
47
from lp.code.model.branch import Branch
51
48
from lp.code.model.branchmergeproposal import BranchMergeProposal
52
49
from lp.code.model.diff import StaticDiff
302
299
        """See `IBranchUpgradeJobSource`."""
303
300
        if not branch.needs_upgrading:
304
301
            raise AssertionError('Branch does not need upgrading.')
 
302
        if branch.upgrade_pending:
 
303
            raise AssertionError('Branch already has upgrade pending.')
305
304
        branch_job = BranchJob(branch, BranchJobType.UPGRADE_BRANCH, {})
306
305
        return cls(branch_job)
307
306
 
326
325
            upgrade_branch = BzrBranch.open_from_transport(upgrade_transport)
327
326
 
328
327
            # Perform the upgrade.
329
 
            upgrade(upgrade_branch.base, self.upgrade_format)
 
328
            upgrade(upgrade_branch.base)
330
329
 
331
330
            # Re-open the branch, since its format has changed.
332
331
            upgrade_branch = BzrBranch.open_from_transport(
346
345
        finally:
347
346
            shutil.rmtree(upgrade_branch_path)
348
347
 
349
 
    @property
350
 
    def upgrade_format(self):
351
 
        """See `IBranch`."""
352
 
        format = BzrDirMetaFormat1()
353
 
        branch_format = BRANCH_FORMAT_UPGRADE_PATH.get(
354
 
            self.branch.branch_format)
355
 
        repository_format = REPOSITORY_FORMAT_UPGRADE_PATH.get(
356
 
            self.branch.repository_format)
357
 
        if branch_format is None or repository_format is None:
358
 
            branch = BzrBranch.open(self.branch.getPullURL())
359
 
            if branch_format is None:
360
 
                branch_format = type(branch._format)
361
 
            if repository_format is None:
362
 
                repository_format = type(branch.repository._format)
363
 
        format.set_branch_format(branch_format())
364
 
        format._set_repository_format(repository_format())
365
 
        return format
366
 
 
367
348
 
368
349
class RevisionMailJob(BranchDiffJob):
369
350
    """A Job that calculates the a diff related to a Branch."""