Skip to content

Commit b76bcea

Browse files
jorgegomzarJorge Gómez Zarzosa
andauthored
Bitbucket: update merge_pull_request method to add merge_message, close_source_branch and merge_strategy parameters (#1437)
Co-authored-by: Jorge Gómez Zarzosa <jorgegomez@bmat.com>
1 parent d08b7fb commit b76bcea

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

atlassian/bitbucket/__init__.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# coding=utf-8
22
import logging
3+
from enum import Enum
4+
from typing import Optional, Union
35

46
from deprecated import deprecated
57
from requests import HTTPError
@@ -10,6 +12,16 @@
1012
log = logging.getLogger(__name__)
1113

1214

15+
class MergeStrategy(Enum):
16+
"""
17+
Merge strategies used by the merge_pull_request method.
18+
"""
19+
20+
MERGE_COMMIT = "merge_commit"
21+
SQUASH = "squash"
22+
FAST_FORWARD = "fast_forward"
23+
24+
1325
class Bitbucket(BitbucketBase):
1426
def __init__(self, url, *args, **kwargs):
1527
if "cloud" not in kwargs and ("bitbucket.org" in url):
@@ -2194,7 +2206,16 @@ def is_pull_request_can_be_merged(self, project_key, repository_slug, pr_id):
21942206
url = "{}/merge".format(self._url_pull_request(project_key, repository_slug, pr_id))
21952207
return self.get(url)
21962208

2197-
def merge_pull_request(self, project_key, repository_slug, pr_id, pr_version):
2209+
def merge_pull_request(
2210+
self,
2211+
project_key: str,
2212+
repository_slug: str,
2213+
pr_id: int,
2214+
pr_version: Optional[int],
2215+
merge_message: str,
2216+
close_source_branch: bool = False,
2217+
merge_strategy: Union[str, MergeStrategy] = MergeStrategy.MERGE_COMMIT,
2218+
):
21982219
"""
21992220
Merge pull request
22002221
The authenticated user must have REPO_READ permission for the repository
@@ -2204,10 +2225,17 @@ def merge_pull_request(self, project_key, repository_slug, pr_id, pr_version):
22042225
:param repository_slug: my_shiny_repo
22052226
:param pr_id: 2341
22062227
:param pr_version:
2228+
:param merge_message: "feat: add new file handler"
2229+
:param close_source_branch: True
2230+
:param merge_strategy: "squash"
22072231
:return:
22082232
"""
22092233
url = "{}/merge".format(self._url_pull_request(project_key, repository_slug, pr_id))
2210-
params = {}
2234+
params = {
2235+
"message": merge_message,
2236+
"close_source_branch": close_source_branch,
2237+
"merge_strategy": MergeStrategy(merge_strategy).value,
2238+
}
22112239
if not self.cloud:
22122240
params["version"] = pr_version
22132241
return self.post(url, params=params)

0 commit comments

Comments
 (0)