From 730615d0f9239af4889ae98eba2884136b1506a9 Mon Sep 17 00:00:00 2001 From: irengrig Date: Fri, 15 Jan 2010 14:36:57 +0300 Subject: [PATCH] IDEA-26731 (Perforce: Error updating VCS changes when project directory is not under client root (even when excluding project directory from VCS)) --- .../intellij/openapi/vcs/impl/ModuleDefaultVcsRootPolicy.java | 10 +++++++--- .../openapi/vcs/changes/committed/RootsCalculator.java | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleDefaultVcsRootPolicy.java b/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleDefaultVcsRootPolicy.java index f2ede48b2a..bf2d3ffc8c 100644 --- a/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleDefaultVcsRootPolicy.java +++ b/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleDefaultVcsRootPolicy.java @@ -53,13 +53,14 @@ public class ModuleDefaultVcsRootPolicy extends DefaultVcsRootPolicy { } public void addDefaultVcsRoots(final NewMappings mappingList, final AbstractVcs vcs, final List result) { - if (myBaseDir != null && vcs.getName().equals(mappingList.getVcsFor(myBaseDir)) && vcs.fileIsUnderVcs(new FilePathImpl(myBaseDir))) { + final ProjectLevelVcsManager vcsManager = ProjectLevelVcsManager.getInstance(myProject); + if (myBaseDir != null && vcs.getName().equals(mappingList.getVcsFor(myBaseDir)) && (vcs.equals(vcsManager.getVcsFor(myBaseDir)))) { result.add(myBaseDir); } final StorageScheme storageScheme = ((ProjectEx) myProject).getStateStore().getStorageScheme(); if (StorageScheme.DIRECTORY_BASED.equals(storageScheme)) { final VirtualFile ideaDir = myBaseDir.findChild(Project.DIRECTORY_STORE_FOLDER); - if (ideaDir != null && ideaDir.isValid() && ideaDir.isDirectory()) { + if (ideaDir != null && ideaDir.isValid() && ideaDir.isDirectory() && vcs.equals(vcsManager.getVcsFor(ideaDir))) { result.add(ideaDir); } } @@ -146,7 +147,10 @@ public class ModuleDefaultVcsRootPolicy extends DefaultVcsRootPolicy { final String defaultMapping = ((ProjectLevelVcsManagerEx)plVcsManager).haveDefaultMapping(); final boolean haveDefaultMapping = (defaultMapping != null) && (defaultMapping.length() > 0); if (haveDefaultMapping) { - builder.addDirtyFile(new VcsRoot(plVcsManager.findVcsByName(defaultMapping), baseDir)); + final AbstractVcs vcs = vcsGuess.getVcsForDirty(baseDir); + if (vcs != null) { + builder.addDirtyFile(new VcsRoot(vcs, baseDir)); + } } final VcsRoot[] vcsRoots = plVcsManager.getAllVcsRoots(); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/RootsCalculator.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/RootsCalculator.java index ec33c5ba92..c8ab525847 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/RootsCalculator.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/RootsCalculator.java @@ -46,7 +46,9 @@ public class RootsCalculator { final List mappings = myPlManager.getDirectoryMappings(myVcs); for (VcsDirectoryMapping mapping : mappings) { if (mapping.isDefaultMapping()) { - roots.add(myProject.getBaseDir()); + if (myVcs.equals(myPlManager.getVcsFor(myProject.getBaseDir()))) { + roots.add(myProject.getBaseDir()); + } } else { VirtualFile newFile = LocalFileSystem.getInstance().findFileByPath(mapping.getDirectory()); if (newFile == null) { -- 2.11.4.GIT