From abea112ec6d24013e0f05d306b545e0a8d7d20ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20T=C3=B6lle?= Date: Thu, 17 Oct 2024 19:18:32 +0200 Subject: [PATCH] fix(gitlab): release not created when release pr was squashed When the release pull request was squashed on GitLab, the release creation fails with error Error: failed to create pending releases: pull request is missing the merge commit This fixes the problem by checking both `MergeCommitSHA` and `SquashCommitSHA` and using whichever is set. --- internal/forge/gitlab/gitlab.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/forge/gitlab/gitlab.go b/internal/forge/gitlab/gitlab.go index f77b324..aedc4f3 100644 --- a/internal/forge/gitlab/gitlab.go +++ b/internal/forge/gitlab/gitlab.go @@ -176,8 +176,8 @@ func (g *GitLab) prForCommit(ctx context.Context, commit git.Commit) (*git.PullR var mergeRequest *gitlab.MergeRequest for _, mr := range associatedMRs { - // We only look for the MR that has this commit set as the "merge commit" => The result of squashing this branch onto main - if mr.MergeCommitSHA == commit.Hash { + // We only look for the MR that has this commit set as the "merge/squash commit" => The result of squashing this branch onto main + if mr.MergeCommitSHA == commit.Hash || mr.SquashCommitSHA == commit.Hash { mergeRequest = mr break } @@ -387,9 +387,12 @@ func gitlabMRToReleasePullRequest(pr *gitlab.MergeRequest) *releasepr.ReleasePul } } + // Commit SHA is saved in either [MergeCommitSHA] or [SquashCommitSHA] depending on which merge method was used. var releaseCommit *git.Commit if pr.MergeCommitSHA != "" { releaseCommit = &git.Commit{Hash: pr.MergeCommitSHA} + } else if pr.SquashCommitSHA != "" { + releaseCommit = &git.Commit{Hash: pr.SquashCommitSHA} } return &releasepr.ReleasePullRequest{