From 4682379227c8cba1ffbc47d65f1d0b89673b76a5 Mon Sep 17 00:00:00 2001 From: "v.barabanov" Date: Tue, 29 Jul 2025 16:26:22 +0300 Subject: [PATCH 1/2] Added merge of master into the branch on CI --- .../Providers/Forgejo/ForgejoRemoteRepoProvider.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Sources/AnalyticsGen/Providers/Forgejo/ForgejoRemoteRepoProvider.swift b/Sources/AnalyticsGen/Providers/Forgejo/ForgejoRemoteRepoProvider.swift index d80235b..ce24bdd 100644 --- a/Sources/AnalyticsGen/Providers/Forgejo/ForgejoRemoteRepoProvider.swift +++ b/Sources/AnalyticsGen/Providers/Forgejo/ForgejoRemoteRepoProvider.swift @@ -41,6 +41,12 @@ struct ForgejoRemoteRepoProvider: RemoteRepoProvider { case .tag(let name), .branch(let name): try shell("git clone --depth 1 -b \(name) \(gitRepositoryURL) \(repositoryPath)") + if ProcessInfo.processInfo.environment["CHANGE_TARGET"] == "develop" { + try shell("cd \(repositoryPath) && git fetch --depth 1 origin refs/heads/master:refs/remotes/origin/master") + // Potential issue here: during merge, we automatically resolve conflicts by favoring HEAD changes + // to avoid manual conflict resolution. + try shell("cd \(repositoryPath) && git merge origin/master -X ours --allow-unrelated-histories --no-edit") + } case .commit(let sha): try shell("git clone \(gitRepositoryURL) \(repositoryPath)") From 5a9a03290a1a82789cced7ac37c82408c65b626c Mon Sep 17 00:00:00 2001 From: "v.barabanov" Date: Tue, 29 Jul 2025 16:49:25 +0300 Subject: [PATCH 2/2] Autoresolving conflicts removed and env var added --- .../Providers/Forgejo/ForgejoRemoteRepoProvider.swift | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Sources/AnalyticsGen/Providers/Forgejo/ForgejoRemoteRepoProvider.swift b/Sources/AnalyticsGen/Providers/Forgejo/ForgejoRemoteRepoProvider.swift index ce24bdd..bceeeca 100644 --- a/Sources/AnalyticsGen/Providers/Forgejo/ForgejoRemoteRepoProvider.swift +++ b/Sources/AnalyticsGen/Providers/Forgejo/ForgejoRemoteRepoProvider.swift @@ -41,11 +41,12 @@ struct ForgejoRemoteRepoProvider: RemoteRepoProvider { case .tag(let name), .branch(let name): try shell("git clone --depth 1 -b \(name) \(gitRepositoryURL) \(repositoryPath)") - if ProcessInfo.processInfo.environment["CHANGE_TARGET"] == "develop" { + if ProcessInfo.processInfo.environment["ANALYTICS_GEN_EXPERIMENTAL_MERGE"] == "true" && + ProcessInfo.processInfo.environment["CHANGE_TARGET"] == "develop" + { + Log.debug("Trying to merge master into user branch") try shell("cd \(repositoryPath) && git fetch --depth 1 origin refs/heads/master:refs/remotes/origin/master") - // Potential issue here: during merge, we automatically resolve conflicts by favoring HEAD changes - // to avoid manual conflict resolution. - try shell("cd \(repositoryPath) && git merge origin/master -X ours --allow-unrelated-histories --no-edit") + try shell("cd \(repositoryPath) && git merge origin/master --allow-unrelated-histories --no-edit") } case .commit(let sha): try shell("git clone \(gitRepositoryURL) \(repositoryPath)")