347
347
self.target_branch = target_branch
348
348
self.target_branch_lp = self.launchpad.branches.getByUrl(url=target_branch.user_url)
349
self.prerequisite_branch = self._get_prerequisite_branch()
350
349
self.commit_message = message
351
350
self.approve = approve
352
351
self.fixes = fixes
357
356
return self.commit_message.strip().encode('utf-8')
358
357
info = ["Source: %s\n" % self.source_branch_lp.bzr_identity]
359
358
info.append("Target: %s\n" % self.target_branch_lp.bzr_identity)
360
if self.prerequisite_branch is not None:
361
info.append("Prereq: %s\n" % self.prerequisite_branch.bzr_identity)
362
359
return ''.join(info)
364
361
def get_initial_body(self):
397
394
if mp.target_branch.self_link == self.target_branch_lp.self_link:
398
395
raise MergeProposalExists(lp_api.canonical_url(mp))
400
def _get_prerequisite_branch(self):
401
hooks = self.hooks['get_prerequisite']
402
prerequisite_branch = None
404
prerequisite_branch = hook(
405
{'launchpad': self.launchpad,
406
'source_branch': self.source_branch_lp,
407
'target_branch': self.target_branch_lp,
408
'prerequisite_branch': prerequisite_branch})
409
return prerequisite_branch
411
397
def approve_proposal(self, mp):
412
398
with self.source_branch.lock_read():
413
399
_call_webservice(
416
402
subject='', # Use the default subject.
417
403
content=u"Rubberstamp! Proposer approves of own proposal.")
418
_call_webservice(mp.setStatus, status=u'Approved', revid=source_branch.last_revision())
404
_call_webservice(mp.setStatus, status=u'Approved',
405
revid=self.source_branch.last_revision())
420
def create_proposal(self, description, reviewers=None, labels=None):
407
def create_proposal(self, description, reviewers=None, labels=None,
408
prerequisite_branch=None):
421
409
"""Perform the submission."""
423
411
raise LabelsUnsupported()
424
if self.prerequisite_branch is None:
412
if prerequisite_branch is not None:
413
prereq = self.launchpad.branches.getByUrl(
414
url=prerequisite_branch.user_url)
427
prereq = self.prerequisite_branch.lp
428
self.prerequisite_branch.update_lp()
429
417
if reviewers is None:
483
471
self.target_branch = target_branch
484
472
(self.target_repo_lp, self.target_branch_lp) = self.lp_host._get_lp_git_ref_from_branch(target_branch)
485
self.prerequisite_branch = self._get_prerequisite_branch()
486
473
self.commit_message = message
487
474
self.approve = approve
488
475
self.fixes = fixes
493
480
return self.commit_message.strip().encode('utf-8')
494
481
info = ["Source: %s\n" % self.source_branch.user_url]
495
482
info.append("Target: %s\n" % self.target_branch.user_url)
496
if self.prerequisite_branch is not None:
497
info.append("Prereq: %s\n" % self.prerequisite_branch.user_url)
498
483
return ''.join(info)
500
485
def get_initial_body(self):
533
518
if mp.target_branch.self_link == self.target_branch_lp.self_link:
534
519
raise MergeProposalExists(lp_api.canonical_url(mp))
536
def _get_prerequisite_branch(self):
537
hooks = self.hooks['get_prerequisite']
538
prerequisite_branch = None
540
prerequisite_branch = hook(
541
{'launchpad': self.launchpad,
542
'source_branch': self.source_branch_lp,
543
'target_branch': self.target_branch_lp,
544
'prerequisite_branch': prerequisite_branch})
545
return prerequisite_branch
547
521
def approve_proposal(self, mp):
548
522
with self.source_branch.lock_read():
549
523
_call_webservice(
552
526
subject='', # Use the default subject.
553
527
content=u"Rubberstamp! Proposer approves of own proposal.")
554
_call_webservice(mp.setStatus, status=u'Approved', revid=source_branch.last_revision())
529
mp.setStatus, status=u'Approved',
530
revid=self.source_branch.last_revision())
556
def create_proposal(self, description, reviewers=None, labels=None):
532
def create_proposal(self, description, reviewers=None, labels=None,
533
prerequisite_branch=None):
557
534
"""Perform the submission."""
559
536
raise LabelsUnsupported()
560
if self.prerequisite_branch is None:
537
if prerequisite_branch is not None:
538
(prereq_repo_lp, prereq_branch_lp) = self.lp_host._get_lp_git_ref_from_branch(prerequisite_branch)
563
prereq = self.prerequisite_branch.lp
564
self.prerequisite_branch.update_lp()
540
prereq_branch_lp = None
565
541
if reviewers is None:
568
544
mp = _call_webservice(
569
545
self.source_branch_lp.createMergeProposal,
570
546
merge_target=self.target_branch_lp,
571
merge_prerequisite=prereq,
547
merge_prerequisite=prereq_branch_lp,
572
548
initial_comment=description.strip().encode('utf-8'),
573
549
commit_message=self.commit_message,
574
550
needs_review=True,
591
567
bug=self.launchpad.bugs[int(self.fixes)])
592
568
return LaunchpadMergeProposal(mp)
571
def modified_files(old_tree, new_tree):
572
"""Return a list of paths in the new tree with modified contents."""
573
for f, (op, path), c, v, p, n, (ok, k), e in new_tree.iter_changes(
575
if c and k == 'file':