feature: initial implementation of squash functionality for git and hg; no enable/disable settings option yet

This commit is contained in:
ievgenii vdovenko 2025-07-02 17:05:00 +02:00
parent 5e3cc80c7b
commit 802e8a8119
8 changed files with 206 additions and 88 deletions

View file

@ -1011,12 +1011,12 @@ class PullRequestModel(BaseModel):
return commit_ids
def merge_repo(self, pull_request, user, extras):
def merge_repo(self, pull_request, user, extras, squash_commits=False):
repo_type = pull_request.source_repo.repo_type
log.debug("Merging pull request %s", pull_request)
extras["user_agent"] = "{}/internal-merge".format(repo_type)
merge_state = self._merge_pull_request(pull_request, user, extras)
merge_state = self._merge_pull_request(pull_request, user, extras, squash_commits=squash_commits)
if merge_state.executed:
log.debug("Merge was successful, updating the pull request comments.")
self._comment_and_close_pr(pull_request, user, merge_state)
@ -1027,7 +1027,7 @@ class PullRequestModel(BaseModel):
log.warning("Merge failed, not updating the pull request.")
return merge_state
def _merge_pull_request(self, pull_request, user, extras, merge_msg=None):
def _merge_pull_request(self, pull_request, user, extras, merge_msg=None, squash_commits=False):
target_vcs = pull_request.target_repo.scm_instance()
source_vcs = pull_request.source_repo.scm_instance()
@ -1067,6 +1067,7 @@ class PullRequestModel(BaseModel):
message=message,
use_rebase=use_rebase,
close_branch=close_branch,
squash_commits=squash_commits,
)
return merge_state