diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/PartialChangesUtil.kt b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/PartialChangesUtil.kt index adf092314691..61f9ee9f2b07 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/PartialChangesUtil.kt +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/PartialChangesUtil.kt @@ -157,6 +157,7 @@ object PartialChangesUtil { val changeListManager = ChangeListManagerEx.getInstanceEx(project) val oldDefaultList = changeListManager.defaultChangeList if (targetChangeList == null || + targetChangeList == oldDefaultList || !changeListManager.areChangeListsEnabled()) { if (targetChangeList != null) { LOG.debug("Active changelist unchanged: ${targetChangeList.name}") @@ -164,6 +165,8 @@ object PartialChangesUtil { return task.compute() } + waitForChangeListManagerUpdate(project) + switchChangeList(changeListManager, targetChangeList, oldDefaultList) val clmConflictTracker = ChangelistConflictTracker.getInstance(project) try { @@ -172,16 +175,20 @@ object PartialChangesUtil { } finally { clmConflictTracker.setIgnoreModifications(false) - if (ApplicationManager.getApplication().isReadAccessAllowed) { - LOG.warn("Can't wait till changes are applied while holding read lock", Throwable()) - } - else { - ChangeListManagerEx.getInstanceEx(project).waitForUpdate() - } + waitForChangeListManagerUpdate(project) restoreChangeList(changeListManager, targetChangeList, oldDefaultList) } } + private fun waitForChangeListManagerUpdate(project: Project) { + if (ApplicationManager.getApplication().isReadAccessAllowed) { + LOG.warn("Can't wait till changes are applied while holding read lock", Throwable()) + } + else { + ChangeListManagerEx.getInstanceEx(project).waitForUpdate() + } + } + private fun switchChangeList(clm: ChangeListManagerEx, targetChangeList: LocalChangeList, oldDefaultList: LocalChangeList) {