Merge lp:~rockstar/launchpad/fix-branch-requestMirror into lp:launchpad

Proposed by Paul Hummer
Status: Merged
Merged at revision: 10995
Proposed branch: lp:~rockstar/launchpad/fix-branch-requestMirror
Merge into: lp:launchpad
Diff against target: 117 lines (+39/-13)
4 files modified
lib/lp/code/enums.py (+9/-0)
lib/lp/code/model/branchjob.py (+25/-1)
lib/lp/code/model/tests/test_branchjob.py (+1/-1)
lib/lp/code/xmlrpc/codehosting.py (+4/-11)
To merge this branch: bzr merge lp:~rockstar/launchpad/fix-branch-requestMirror
Reviewer Review Type Date Requested Status
Francis J. Lacoste (community) release-critical Approve
Tim Penhey (community) Approve
Review via email: mp+27317@code.launchpad.net

Description of the change

This branch makes BranchUpgradeJob stop calling IBranch.requestMirror. Instead, we use IBranch.branchChanged to change the formats. This is also better because a BranchScanJob doesn't have to be created. See bug #592496

To post a comment you must log in.
Revision history for this message
Tim Penhey (thumper) wrote :

Is it right to hard code the formats?

review: Needs Information
Revision history for this message
Tim Penhey (thumper) :
review: Approve
Revision history for this message
Francis J. Lacoste (flacoste) wrote :

Fine to CP once this has been QA on staging.

review: Approve (release-critical)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/code/enums.py'
--- lib/lp/code/enums.py 2010-02-23 02:31:48 +0000
+++ lib/lp/code/enums.py 2010-06-11 03:54:27 +0000
@@ -22,6 +22,7 @@
22 'CodeImportReviewStatus',22 'CodeImportReviewStatus',
23 'CodeReviewNotificationLevel',23 'CodeReviewNotificationLevel',
24 'CodeReviewVote',24 'CodeReviewVote',
25 'match_enum_title',
25 'RevisionControlSystems',26 'RevisionControlSystems',
26 'TeamBranchVisibilityRule',27 'TeamBranchVisibilityRule',
27 'UICreatableBranchType',28 'UICreatableBranchType',
@@ -31,6 +32,14 @@
31 DBEnumeratedType, DBItem, EnumeratedType, Item, use_template)32 DBEnumeratedType, DBItem, EnumeratedType, Item, use_template)
3233
3334
35def match_enum_title(enum, title, default):
36 for value in enum.items:
37 if value.title == title:
38 return value
39 else:
40 return default
41
42
34class BranchLifecycleStatus(DBEnumeratedType):43class BranchLifecycleStatus(DBEnumeratedType):
35 """Branch Lifecycle Status44 """Branch Lifecycle Status
3645
3746
=== modified file 'lib/lp/code/model/branchjob.py'
--- lib/lp/code/model/branchjob.py 2010-05-26 23:16:24 +0000
+++ lib/lp/code/model/branchjob.py 2010-06-11 03:54:27 +0000
@@ -46,6 +46,8 @@
46from canonical.database.enumcol import EnumCol46from canonical.database.enumcol import EnumCol
47from canonical.database.sqlbase import SQLBase47from canonical.database.sqlbase import SQLBase
48from canonical.launchpad.webapp import canonical_url, errorlog48from canonical.launchpad.webapp import canonical_url, errorlog
49from lp.code.bzr import BranchFormat, ControlFormat, RepositoryFormat
50from lp.code.enums import match_enum_title
49from lp.code.model.branch import Branch51from lp.code.model.branch import Branch
50from lp.code.model.branchmergeproposal import BranchMergeProposal52from lp.code.model.branchmergeproposal import BranchMergeProposal
51from lp.code.model.diff import StaticDiff53from lp.code.model.diff import StaticDiff
@@ -363,7 +365,29 @@
363 upgrade_transport.clone('.bzr').copy_tree_to_transport(365 upgrade_transport.clone('.bzr').copy_tree_to_transport(
364 source_branch_transport.clone('.bzr'))366 source_branch_transport.clone('.bzr'))
365367
366 self.branch.requestMirror()368 # Re-open the source branch again.
369 source_branch = BzrBranch.open_from_transport(
370 source_branch_transport)
371
372 control_format = match_enum_title(
373 ControlFormat,
374 source_branch.bzrdir._format.get_format_string(),
375 ControlFormat.UNRECOGNIZED)
376 branch_format = match_enum_title(
377 BranchFormat,
378 source_branch._format.get_format_string(),
379 BranchFormat.UNRECOGNIZED)
380 repository_format = match_enum_title(
381 RepositoryFormat,
382 source_branch.repository._format.get_format_string(),
383 RepositoryFormat.UNRECOGNIZED)
384
385 self.branch.branchChanged(
386 self.branch.stacked_on,
387 self.branch.last_scanned_id,
388 control_format,
389 branch_format,
390 repository_format)
367 finally:391 finally:
368 shutil.rmtree(upgrade_branch_path)392 shutil.rmtree(upgrade_branch_path)
369393
370394
=== modified file 'lib/lp/code/model/tests/test_branchjob.py'
--- lib/lp/code/model/tests/test_branchjob.py 2010-05-30 04:06:48 +0000
+++ lib/lp/code/model/tests/test_branchjob.py 2010-06-11 03:54:27 +0000
@@ -264,7 +264,7 @@
264 new_branch.repository._format.get_format_string(),264 new_branch.repository._format.get_format_string(),
265 'Bazaar repository format 2a (needs bzr 1.16 or later)\n')265 'Bazaar repository format 2a (needs bzr 1.16 or later)\n')
266266
267 self.assertTrue(db_branch.pending_writes)267 self.assertFalse(db_branch.needs_upgrading)
268268
269 def test_needs_no_upgrading(self):269 def test_needs_no_upgrading(self):
270 # Branch upgrade job creation should raise an AssertionError if the270 # Branch upgrade job creation should raise an AssertionError if the
271271
=== modified file 'lib/lp/code/xmlrpc/codehosting.py'
--- lib/lp/code/xmlrpc/codehosting.py 2010-04-21 04:17:23 +0000
+++ lib/lp/code/xmlrpc/codehosting.py 2010-06-11 03:54:27 +0000
@@ -33,7 +33,7 @@
3333
34from lp.code.errors import UnknownBranchTypeError34from lp.code.errors import UnknownBranchTypeError
35from lp.code.bzr import BranchFormat, ControlFormat, RepositoryFormat35from lp.code.bzr import BranchFormat, ControlFormat, RepositoryFormat
36from lp.code.enums import BranchType36from lp.code.enums import BranchType, match_enum_title
37from lp.code.interfaces.branch import BranchCreationException37from lp.code.interfaces.branch import BranchCreationException
38from lp.code.interfaces.branchlookup import IBranchLookup38from lp.code.interfaces.branchlookup import IBranchLookup
39from lp.code.interfaces.branchnamespace import (39from lp.code.interfaces.branchnamespace import (
@@ -206,18 +206,11 @@
206 if branch is None:206 if branch is None:
207 return faults.NoBranchWithID(branch_id)207 return faults.NoBranchWithID(branch_id)
208208
209 def match_title(enum, title, default):209 control_format = match_enum_title(
210 for value in enum.items:
211 if value.title == title:
212 return value
213 else:
214 return default
215
216 control_format = match_title(
217 ControlFormat, control_string, ControlFormat.UNRECOGNIZED)210 ControlFormat, control_string, ControlFormat.UNRECOGNIZED)
218 branch_format = match_title(211 branch_format = match_enum_title(
219 BranchFormat, branch_string, BranchFormat.UNRECOGNIZED)212 BranchFormat, branch_string, BranchFormat.UNRECOGNIZED)
220 repository_format = match_title(213 repository_format = match_enum_title(
221 RepositoryFormat, repository_string,214 RepositoryFormat, repository_string,
222 RepositoryFormat.UNRECOGNIZED)215 RepositoryFormat.UNRECOGNIZED)
223216