From 7aadf95f66b0d4c2309426f1ad8ba24c769880f5 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 30 Jul 2018 16:22:22 +0300 Subject: [PATCH] Don't show migration dialog if there're no project files changed (KT-23401) --- .../KotlinMigrationProjectComponent.kt | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt index c421541ea33..afa80471986 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt @@ -16,6 +16,8 @@ import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.roots.libraries.Library +import com.intellij.openapi.vcs.changes.ChangeListManager +import com.intellij.openapi.vcs.ex.ProjectLevelVcsManagerEx import com.intellij.util.CommonProcessors import com.intellij.util.text.VersionComparatorUtil import org.jetbrains.kotlin.config.ApiVersion @@ -44,7 +46,8 @@ class KotlinMigrationProjectComponent(val project: Project) { @Synchronized fun onImportAboutToStart() { - if (!CodeMigrationToggleAction.isEnabled(project)) { + if (!CodeMigrationToggleAction.isEnabled(project) || !hasChangesInProjectFiles(project)) { + old = null return } @@ -57,10 +60,15 @@ class KotlinMigrationProjectComponent(val project: Project) { return } + if (old == null) return; + new = MigrationState.build(project) val migrationInfo = prepareMigrationInfo(old, new) ?: return + old = null + new = null + if (ApplicationManager.getApplication().isUnitTestMode) { return } @@ -108,6 +116,31 @@ class KotlinMigrationProjectComponent(val project: Project) { return null } + + private fun hasChangesInProjectFiles(project: Project): Boolean { + if (ProjectLevelVcsManagerEx.getInstance(project).allVcsRoots.isEmpty()) { + return true + } + + val changedFiles = ChangeListManager.getInstance(project).affectedPaths + for (changedFile in changedFiles) { + val extension = changedFile.extension + when (extension) { + "gradle" -> return true + "properties" -> return true + "iml" -> return true + "xml" -> { + if (changedFile.name == "pom.xml") return true + val parentDir = changedFile.parentFile + if (parentDir.isDirectory && parentDir.name == Project.DIRECTORY_STORE_FOLDER) { + return true + } + } + } + } + + return false + } } }