用途:该技能面向 Kotlin 版本分支场景。当切到新的 Kotlin 版本时,由于生成的版本常量相对新语言版本已过期,CI 构建会报“[Re-generation needed!]”而失败。技能通过在受影响的生成器调用中加入 forbidGenerationOnTeamcity = false 来关闭生成检查,从而解除 CI 阻塞,等待版本切换稳定后再处理;分支完成后在 master 上会将这些改动还原。
主要能力与用法:技能首先询问用户是要关闭生成检查(用于分支)还是还原(分支完成后重新启用)。关闭时,需对两个文件中每个 GeneratorsFileUtil.writeFileIfContentChanged(...) 调用加上 forbidGenerationOnTeamcity = false;根据当前状态,可添加该参数或将 true 换成 false。使用 replace_text_in_file,以 forbidGenerationOnTeamcity = true -> forbidGenerationOnTeamcity = false 作为 replaceAll 替换;若找不到匹配则按首次应用示例添加参数。涉及文件:libraries/tools/gradle/generators/native-cache-kotlin-version/src/main/kotlin/org/jetbrains/kotlin/gradle/generators/native/cache/version/Main.kt(main() 末尾一处调用);同目录下 NativeCacheKotlinVersionsFile.kt(updateAndGetAll() 内一处调用)。各替换相互独立,可并行执行。提交信息模式为“[Gradle] Do not forbid generator on teamcity for native cache version”。还原时将 false 换回 true,提交信息为 Revert 上述消息。
分支关闭时还需更新测试中的 DisableCacheInKotlinVersion:该生成器采用滚动弃用周期(N 最新无弃用、N-1 警告、N-2 错误),分支后测试中的版本常量可能升到 ERROR 导致编译失败。文件为 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/KotlinNativeDisableCacheIT.kt,将旧版本常量替换为下一个版本常量(如 2_3_20→2_4_0),通常有 3 处(2 处在字符串模板、1 处在 Kotlin 代码),用 replaceAll: true 一次性替换。提交信息模式为“[Gradle] Bump DisableCacheInKotlinVersion in KotlinNativeDisableCacheIT”。
限制与验证:仅可手动调用,路径为 /disable-generation-check。全部替换后,对两个文件运行 JetBrains MCP get_file_problems(errorsOnly: false);任何与 forbidGenerationOnTeamcity 或改动行相关的错误都表示有问题,既有的告警(未使用导入、空白风格)可忽略。其他适用平台或收费情况资料未提供。