diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsDirtyScopeImpl.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsDirtyScopeImpl.java index c2542fb3bfda..de0d9b6fa6a0 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsDirtyScopeImpl.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsDirtyScopeImpl.java @@ -419,7 +419,7 @@ public class VcsDirtyScopeImpl extends VcsModifiableDirtyScope { THashSet dirsByRoot = myDirtyDirectoriesRecursively.get(root); if (dirsByRoot != null) { for (FilePath dir : dirsByRoot) { - final VirtualFile vFile = dir.getVirtualFile(); + final VirtualFile vFile = obtainVirtualFile(dir); if (vFile != null && vFile.isValid()) { myVcsManager.iterateVfUnderVcsRoot(vFile, processor); } @@ -431,13 +431,13 @@ public class VcsDirtyScopeImpl extends VcsModifiableDirtyScope { final THashSet files = myDirtyFiles.get(root); if (files != null) { for (FilePath file : files) { - if (file.getVirtualFile() != null) { - processor.process(file.getVirtualFile()); - } - final VirtualFile vFile = file.getVirtualFile(); - if (vFile != null && vFile.isValid() && vFile.isDirectory()) { - for (VirtualFile child : vFile.getChildren()) { - processor.process(child); + VirtualFile vFile = obtainVirtualFile(file); + if (vFile != null && vFile.isValid()) { + processor.process(vFile); + if (vFile.isDirectory()) { + for (VirtualFile child : vFile.getChildren()) { + processor.process(child); + } } } } @@ -445,6 +445,12 @@ public class VcsDirtyScopeImpl extends VcsModifiableDirtyScope { } } + @Nullable + private static VirtualFile obtainVirtualFile(FilePath file) { + VirtualFile vFile = file.getVirtualFile(); + return vFile == null ? VfsUtil.findFileByIoFile(file.getIOFile(), false) : vFile; + } + @Override public boolean isEmpty() { return myDirtyDirectoriesRecursively.isEmpty() && myDirtyFiles.isEmpty();