diff --git a/source/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java b/source/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java index 47b566ffb350..e3c9f8c9ae59 100644 --- a/source/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java +++ b/source/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java @@ -81,6 +81,7 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme private static Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.impl.ProjectLevelVcsManagerImpl"); private List myVcss = new ArrayList(); + private AbstractVcs[] myCachedVCSs = null; private final Project myProject; private final Map myVcsToStatus = new HashMap(); private com.intellij.util.containers.HashMap myLineStatusTrackers = @@ -109,6 +110,7 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme myVcsToStatus.put(vcs, Boolean.FALSE); } myVcss.add(vcs); + myCachedVCSs = null; } public AbstractVcs findVcsByName(String name) { @@ -129,7 +131,10 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme public AbstractVcs[] getAllVcss() { LOG.assertTrue(!myIsDisposed); LOG.assertTrue(myIsInitialized); - return myVcss.toArray(new AbstractVcs[myVcss.size()]); + if (myCachedVCSs == null) { + myCachedVCSs = myVcss.toArray(new AbstractVcs[myVcss.size()]); + } + return myCachedVCSs; } @@ -246,6 +251,7 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme e.printStackTrace(); } myVcss.remove(vcs); + myCachedVCSs = null; } private Project getProject() {