/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/plugins/propose/gitlabs.py

  • Committer: Jelmer Vernooij
  • Date: 2020-03-22 19:12:43 UTC
  • mfrom: (7490.7.6 work)
  • mto: (7490.7.7 work)
  • mto: This revision was merged to the branch mainline in revision 7501.
  • Revision ID: jelmer@jelmer.uk-20200322191243-yx8ils8lvfmfh7rq
Merge lp:brz/3.1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
100
100
        self.error = error
101
101
 
102
102
 
 
103
class MergeRequestExists(Exception):
 
104
    """Raised when a merge requests already exists."""
 
105
 
 
106
 
103
107
def default_config_path():
104
108
    return os.path.join(bedding.config_dir(), 'gitlab.conf')
105
109
 
271
275
 
272
276
    supports_merge_proposal_labels = True
273
277
    supports_merge_proposal_commit_message = False
 
278
    supports_allow_collaboration = True
274
279
    merge_proposal_description_format = 'markdown'
275
280
 
276
281
    def __repr__(self):
405
410
        if response.status == 403:
406
411
            raise errors.PermissionDenied(response.text)
407
412
        if response.status == 409:
408
 
            raise MergeProposalExists(self.source_branch.user_url)
 
413
            raise MergeRequestExists()
409
414
        if response.status != 201:
410
415
            raise errors.InvalidHttpResponse(path, response.text)
411
416
        return json.loads(response.data)
418
423
 
419
424
    def publish_derived(self, local_branch, base_branch, name, project=None,
420
425
                        owner=None, revision_id=None, overwrite=False,
421
 
                        allow_lossy=True):
 
426
                        allow_lossy=True, tag_selector=None):
422
427
        (host, base_project, base_branch_name) = parse_gitlab_branch_url(base_branch)
423
428
        if owner is None:
424
429
            owner = self._get_logged_in_username()
433
438
        try:
434
439
            push_result = remote_dir.push_branch(
435
440
                local_branch, revision_id=revision_id, overwrite=overwrite,
436
 
                name=name)
 
441
                name=name, tag_selector=tag_selector)
437
442
        except errors.NoRoundtrippingSupport:
438
443
            if not allow_lossy:
439
444
                raise
440
445
            push_result = remote_dir.push_branch(
441
446
                local_branch, revision_id=revision_id, overwrite=overwrite,
442
 
                name=name, lossy=True)
 
447
                name=name, lossy=True, tag_selector=tag_selector)
443
448
        public_url = gitlab_url_to_bzr_url(
444
449
            target_project['http_url_to_repo'], name)
445
450
        return push_result.target_branch, public_url
588
593
 
589
594
    def create_proposal(self, description, reviewers=None, labels=None,
590
595
                        prerequisite_branch=None, commit_message=None,
591
 
                        work_in_progress=False):
 
596
                        work_in_progress=False, allow_collaboration=False):
592
597
        """Perform the submission."""
593
598
        # https://docs.gitlab.com/ee/api/merge_requests.html#create-mr
594
599
        if prerequisite_branch is not None:
600
605
        title = determine_title(description)
601
606
        if work_in_progress:
602
607
            title = 'WIP: %s' % title
603
 
        # TODO(jelmer): Allow setting allow_collaboration field
604
608
        # TODO(jelmer): Allow setting milestone field
605
609
        # TODO(jelmer): Allow setting squash field
606
610
        kwargs = {
609
613
            'target_project_id': target_project['id'],
610
614
            'source_branch_name': self.source_branch_name,
611
615
            'target_branch_name': self.target_branch_name,
612
 
            'description': description}
 
616
            'description': description,
 
617
            'allow_collaboration': allow_collaboration}
613
618
        if labels:
614
619
            kwargs['labels'] = ','.join(labels)
615
620
        if reviewers:
620
625
                else:
621
626
                    user = self.gl._get_user(reviewer)
622
627
                kwargs['assignee_ids'].append(user['id'])
623
 
        merge_request = self.gl._create_mergerequest(**kwargs)
 
628
        try:
 
629
            merge_request = self.gl._create_mergerequest(**kwargs)
 
630
        except MergeRequestExists:
 
631
            raise ProposalExists(self.source_branch.user_url)
624
632
        return GitLabMergeProposal(self.gl, merge_request)
625
633
 
626
634