getVcsRootObjectFor: smaller read action (IDEA-CR-29817)

e.g. to allow for VFS refresh in findValidParentAccurately
This commit is contained in:
peter
2018-03-01 15:16:37 +01:00
parent 15c3f14340
commit ef4637e7ee
2 changed files with 4 additions and 8 deletions
@@ -17,7 +17,6 @@
package com.intellij.openapi.vcs.impl;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
@@ -116,8 +115,7 @@ public class ModuleDefaultVcsRootPolicy extends DefaultVcsRootPolicy {
@Override
@Nullable
public VirtualFile getVcsRootFor(@NotNull VirtualFile file) {
FileIndexFacade indexFacade = ServiceManager.getService(myProject, FileIndexFacade.class);
if (myBaseDir != null && indexFacade.isValidAncestor(myBaseDir, file)) {
if (myBaseDir != null && ReadAction.compute(() -> FileIndexFacade.getInstance(myProject).isValidAncestor(myBaseDir, file))) {
LOG.debug("File " + file + " is under project base dir " + myBaseDir);
return myBaseDir;
}
@@ -325,12 +325,10 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme
@Override
public VcsRoot getVcsRootObjectFor(@Nullable FilePath file) {
return ReadAction.compute(() -> {
if (file == null || myProject.isDisposed()) return null;
if (file == null) return null;
VirtualFile vFile = ChangesUtil.findValidParentAccurately(file);
return vFile != null ? getVcsRootObjectFor(vFile) : null;
});
VirtualFile vFile = ChangesUtil.findValidParentAccurately(file);
return vFile != null ? getVcsRootObjectFor(vFile) : null;
}
public void unregisterVcs(@NotNull AbstractVcs vcs) {