IDEA-26360 (Performance and inconsistency issues with svn:externals and "Detect neste...
authorirengrig <Irina.Chernushina@jetbrains.com>
Fri, 29 Jan 2010 09:42:58 +0000 (12:42 +0300)
committerirengrig <Irina.Chernushina@jetbrains.com>
Fri, 29 Jan 2010 09:42:58 +0000 (12:42 +0300)
plugins/svn4idea/src/org/jetbrains/idea/svn/update/AbstractSvnUpdateIntegrateEnvironment.java
plugins/svn4idea/src/org/jetbrains/idea/svn/update/SvnUpdateContext.java

index 8e9817756502f27eea30c61a66d3e179ecf66360..a54115fe405adc2a0e5bb3aa5237c5f7ec02fc09 100644 (file)
@@ -71,7 +71,7 @@ public abstract class AbstractSvnUpdateIntegrateEnvironment implements UpdateEnv
     throws ProcessCanceledException {
 
     if (context.isNull()) {
-      context.set(new SvnUpdateContext());
+      context.set(new SvnUpdateContext(myVcs));
     }
 
     final ArrayList<VcsException> exceptions = new ArrayList<VcsException>();
index 2fb2a9d8dbb547c668433a3f82bdac132b9e55f9..616845d131773eee37f3bbd5c5510450b4569c60 100644 (file)
@@ -17,6 +17,9 @@ package org.jetbrains.idea.svn.update;
 
 import com.intellij.openapi.vcs.update.SequentialUpdatesContext;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.idea.svn.NestedCopyType;
+import org.jetbrains.idea.svn.RootUrlInfo;
+import org.jetbrains.idea.svn.SvnVcs;
 
 import java.io.File;
 import java.util.HashSet;
@@ -24,8 +27,10 @@ import java.util.Set;
 
 public class SvnUpdateContext implements SequentialUpdatesContext {
   private final Set<File> myUpdatedExternals;
+  private final SvnVcs myVcs;
 
-  public SvnUpdateContext() {
+  public SvnUpdateContext(final SvnVcs vcs) {
+    myVcs = vcs;
     myUpdatedExternals = new HashSet<File>();
   }
 
@@ -44,6 +49,11 @@ public class SvnUpdateContext implements SequentialUpdatesContext {
   }
 
   public boolean shouldRunFor(final File ioRoot) {
-    return ! myUpdatedExternals.contains(ioRoot);
+    if (myUpdatedExternals.contains(ioRoot)) return false;
+    final RootUrlInfo info = myVcs.getSvnFileUrlMapping().getWcRootForFilePath(ioRoot);
+    if (info != null) {
+      return ! NestedCopyType.switched.equals(info.getType());
+    }
+    return true;
   }
 }