IJPL-236956 [gitlab]: squashReadOnly field is removed from MR query for versions older than 17.10

🍒 Cherry-picked from review IJ-MR-193866

Merge-request: IJ-MR-194120
Merged-by: Valeria Golovina <Valeria.Golovina@jetbrains.com>

GitOrigin-RevId: eeac1cd2fbbd0c2a9ca567135b2b0eb19fa0307b
This commit is contained in:
Valeria Golovina
2026-03-03 09:24:48 +00:00
committed by intellij-monorepo-bot
parent 18344a1a1b
commit 778b726f85
11 changed files with 203 additions and 9 deletions
@@ -37,7 +37,6 @@ fragment mergeRequest on MergeRequest {
squash
squashOnMerge
squashReadOnly
defaultSquashCommitMessage
defaultMergeCommitMessage
shouldRemoveSourceBranch
@@ -37,7 +37,6 @@ fragment mergeRequest on MergeRequest {
squash
squashOnMerge
squashReadOnly
defaultSquashCommitMessage
defaultMergeCommitMessage
shouldRemoveSourceBranch
@@ -37,7 +37,6 @@ fragment mergeRequest on MergeRequest {
squash
squashOnMerge
squashReadOnly
defaultSquashCommitMessage
defaultMergeCommitMessage
shouldRemoveSourceBranch
@@ -38,7 +38,6 @@ fragment mergeRequest on MergeRequest {
squash
squashOnMerge
squashReadOnly
defaultSquashCommitMessage
defaultMergeCommitMessage
shouldRemoveSourceBranch
@@ -38,7 +38,6 @@ fragment mergeRequest on MergeRequest {
squash
squashOnMerge
squashReadOnly
defaultSquashCommitMessage
defaultMergeCommitMessage
shouldRemoveSourceBranch
@@ -0,0 +1,99 @@
# Diff with EE: approved not included
fragment mergeRequest on MergeRequest {
id
iid
title
description
webUrl
createdAt
targetBranch
sourceBranch
labels(first: 100) {
pageInfo {
...pageInfo
}
nodes {
...label
}
}
diffRefs {
baseSha
startSha
headSha
}
conflicts
headPipeline {
...pipeline
}
mergeStatusEnum
mergeable
state
draft
squash
squashOnMerge
defaultSquashCommitMessage
defaultMergeCommitMessage
shouldRemoveSourceBranch
forceRemoveSourceBranch
shouldBeRebased
rebaseInProgress
targetProject {
...project
}
sourceProject {
...project
}
author {
...user
}
approvedBy(first: 1000) {
pageInfo {
...pageInfo
}
nodes {
...user
}
}
assignees(first: 1000) {
pageInfo {
...pageInfo
}
nodes {
...user
}
}
reviewers(first: 1000) {
pageInfo {
...pageInfo
}
nodes {
...userReviewer
}
}
commits(first: 1000) {
pageInfo {
...pageInfo
}
nodes {
...glCommit
}
}
userPermissions {
...mergeRequestPermissions
}
}
@@ -0,0 +1,99 @@
fragment mergeRequest on MergeRequest {
id
iid
title
description
webUrl
createdAt
targetBranch
sourceBranch
labels(first: 100) {
pageInfo {
...pageInfo
}
nodes {
...label
}
}
diffRefs {
baseSha
startSha
headSha
}
approvalsRequired # Not available in community
conflicts
headPipeline {
...pipeline
}
mergeStatusEnum
mergeable
state
draft
squash
squashOnMerge
defaultSquashCommitMessage
defaultMergeCommitMessage
shouldRemoveSourceBranch
forceRemoveSourceBranch
shouldBeRebased
rebaseInProgress
targetProject {
...project
}
sourceProject {
...project
}
author {
...user
}
approvedBy(first: 1000) {
pageInfo {
...pageInfo
}
nodes {
...user
}
}
assignees(first: 1000) {
pageInfo {
...pageInfo
}
nodes {
...user
}
}
reviewers(first: 1000) {
pageInfo {
...pageInfo
}
nodes {
...userReviewer
}
}
commits(first: 1000) {
pageInfo {
...pageInfo
}
nodes {
...glCommit
}
}
userPermissions {
...mergeRequestPermissions
}
}
@@ -17,7 +17,8 @@ internal object GitLabGQLQueryLoaders {
GitLabVersion(14, 7),
GitLabVersion(15, 9),
GitLabVersion(16, 1),
GitLabVersion(16, 8)
GitLabVersion(16, 8),
GitLabVersion(17, 10)
)
val default: GraphQLQueryLoader by lazy {
@@ -44,7 +44,7 @@ class GitLabMergeRequestDTO(
val userPermissions: GitLabMergeRequestPermissionsDTO,
val squash: Boolean, // property set on the MR
val squashOnMerge: Boolean, // [squash] can be overridden by project settings, and this is the final value after override
val squashReadOnly: Boolean, // if [squash] can be changed for this MR
@SinceGitLab("17.10") val squashReadOnly: Boolean?, // if [squash] can be changed for this MR
val defaultSquashCommitMessage: String?,
val defaultMergeCommitMessage: String?,
// set after the merge is triggered, ignore for our purposes
@@ -46,7 +46,7 @@ data class GitLabMergeRequestFullDetails(
val allowMergeOnSkippedPipeline: Boolean,
val shouldSquash: Boolean,
val shouldSquashWithProject: Boolean, // [shouldSquash] + project override
val shouldSquashReadOnly: Boolean,
val shouldSquashReadOnly: Boolean?,
val defaultSquashCommitMessage: String?,
val defaultMergeCommitMessage: String?,
val removeSourceBranch: Boolean,
@@ -205,7 +205,7 @@ internal class GitLabMergeRequestReviewFlowViewModelImpl(
mergeCommitMessageDefault = details.defaultMergeCommitMessage,
removeSourceBranch = details.removeSourceBranch,
squashCommits = details.shouldSquashWithProject,
squashCommitsReadonly = details.shouldSquashReadOnly,
squashCommitsReadonly = details.shouldSquashReadOnly ?: projectData.squashMergeRequestBeforeMergeReadOnly,
squashCommitMessageDefault = details.defaultSquashCommitMessage
)
}.stateInNow(scope, null)