Skip to content

Commit 6b3a8bd

Browse files
committed
feat: branch merge applying
1 parent 522b61d commit 6b3a8bd

File tree

13 files changed

+103
-16
lines changed

13 files changed

+103
-16
lines changed

backend/data/src/main/kotlin/io/tolgee/constants/Message.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,8 @@ enum class Message {
315315
ORIGIN_BRANCH_NOT_FOUND,
316316
BRANCH_MERGE_NOT_FOUND,
317317
BRANCH_MERGE_CHANGE_NOT_FOUND,
318+
BRANCH_MERGE_REVISION_NOT_VALID,
319+
BRANCH_MERGE_CONFLICTS_NOT_RESOLVED,
318320
;
319321

320322
val code: String

backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/data/BranchTestData.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class BranchTestData(
4343
isProtected = true
4444
isDefault = true
4545
createdAt = currentDateProvider.date
46+
revision = 10
4647
}.build {
4748
mainBranch = self
4849
addBranch {
@@ -51,6 +52,7 @@ class BranchTestData(
5152
isProtected = false
5253
isDefault = false
5354
originBranch = this
55+
revision = 15
5456
}.build {
5557
featureBranch = self
5658
}

backend/data/src/main/kotlin/io/tolgee/model/branching/BranchMerge.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,13 @@ class BranchMerge : StandardAuditModel(), EntityWithId {
4343
cascade = [CascadeType.ALL]
4444
)
4545
var changes: MutableList<BranchMergeChange> = mutableListOf()
46+
47+
val isRevisionValid: Boolean
48+
get() = sourceRevision == sourceBranch.revision && targetRevision == targetBranch.revision
49+
50+
val isResolved: Boolean
51+
get() = changes.none { !it.isResolved }
52+
53+
val isReadyToMerge: Boolean
54+
get() = isRevisionValid && isResolved
4655
}

backend/data/src/main/kotlin/io/tolgee/model/branching/BranchMergeChange.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,7 @@ class BranchMergeChange : StandardAuditModel(), EntityWithId {
5252
@Column(nullable = true)
5353
@Enumerated(EnumType.STRING)
5454
var resolution: BranchKeyMergeResolutionType? = null
55+
56+
val isResolved: Boolean
57+
get() = resolution != null
5558
}

backend/data/src/main/kotlin/io/tolgee/model/key/Key.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,5 +150,13 @@ class Key(
150150
override fun merge(source: Key) {
151151
this.isPlural = source.isPlural
152152
this.pluralArgName = source.pluralArgName
153+
this.translations.forEach { translation ->
154+
translation.merge(source.translations.find { it.language == translation.language }!!)
155+
}
156+
this.keyMeta?.let { meta ->
157+
source.keyMeta?.let { sourceMeta ->
158+
meta.merge(sourceMeta)
159+
}
160+
}
153161
}
154162
}

backend/data/src/main/kotlin/io/tolgee/model/translation/Translation.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ class Translation(
214214
override fun merge(source: Translation) {
215215
this.text = source.text
216216
this.state = source.state
217-
this.labels = source.labels
217+
this.labels.clear()
218+
this.labels.addAll(source.labels)
218219
}
219220
}

backend/data/src/main/kotlin/io/tolgee/service/branching/BranchService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ interface BranchService {
1515
fun createBranch(projectId: Long, name: String, originBranchId: Long): Branch
1616
fun deleteBranch(projectId: Long, branchId: Long)
1717
fun dryRunMergeBranch(projectId: Long, request: DryRunMergeBranchRequest): BranchMerge
18-
fun getBranchMerge(projectId: Long, mergeId: Long): BranchMergeView
18+
fun getBranchMergeView(projectId: Long, mergeId: Long): BranchMergeView
1919
fun getBranchMergeConflicts(
2020
projectId: Long,
2121
branchMergeId: Long,

backend/data/src/main/kotlin/io/tolgee/service/branching/BranchServiceOssStub.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class BranchServiceOssStub : BranchService {
3232
throw UnsupportedOperationException()
3333
}
3434

35-
override fun getBranchMerge(projectId: Long, mergeId: Long): BranchMergeView {
35+
override fun getBranchMergeView(projectId: Long, mergeId: Long): BranchMergeView {
3636
throw UnsupportedOperationException()
3737
}
3838

ee/backend/app/src/main/kotlin/io/tolgee/ee/api/v2/controllers/branching/BranchController.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ class BranchController(
113113
fun getBranchMergeSessionPreview(
114114
@PathVariable mergeId: Long,
115115
): BranchMergeModel {
116-
val merge = branchService.getBranchMerge(projectHolder.project.id, mergeId)
116+
val merge = branchService.getBranchMergeView(projectHolder.project.id, mergeId)
117117
return branchMergeModelAssembler.toModel(merge)
118118
}
119119

ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/branching/BranchMergeRepository.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ import org.springframework.data.jpa.repository.Query
77

88
interface BranchMergeRepository : JpaRepository<BranchMerge, Long> {
99

10+
@Query(
11+
"""
12+
select bm from BranchMerge bm
13+
join fetch bm.sourceBranch sb
14+
join fetch bm.targetBranch tb
15+
where sb.project.id = :projectId and bm.id = :mergeId
16+
"""
17+
)
18+
fun findMerge(projectId: Long, mergeId: Long): BranchMerge?
19+
1020
@Query(
1121
"""
1222
select new io.tolgee.dtos.queryResults.branching.BranchMergeView(

0 commit comments

Comments
 (0)