IDEA-69194 hg: don't check for incoming/outgoing in non-mercurial repos
authorKirill Likhodedov <kirill.likhodedov@jetbrains.com>
Thu, 5 May 2011 11:49:35 +0000 (15:49 +0400)
committerKirill Likhodedov <kirill.likhodedov@jetbrains.com>
Thu, 5 May 2011 11:54:20 +0000 (15:54 +0400)
plugins/hg4idea/src/org/zmlx/hg4idea/HgRemoteStatusUpdater.java
plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java

index 935f87cea32ee5faa0e4142f3c5fe395d204c140..7459fa71a42b3bd855133b412cb55ae6f44c2b00 100644 (file)
@@ -19,8 +19,9 @@ import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.progress.ProgressIndicator;
 import com.intellij.openapi.progress.Task;
 import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vcs.AbstractVcs;
 import com.intellij.openapi.vcs.ProjectLevelVcsManager;
-import com.intellij.openapi.vcs.VcsRoot;
+import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
 import org.zmlx.hg4idea.command.HgIncomingCommand;
 import org.zmlx.hg4idea.command.HgOutgoingCommand;
@@ -39,8 +40,10 @@ class HgRemoteStatusUpdater implements HgUpdater {
   private final HgChangesetStatus myOutgoingStatus;
   private final HgProjectSettings myProjectSettings;
   private final AtomicBoolean myUpdateStarted = new AtomicBoolean();
+  private final AbstractVcs myVcs;
 
-  public HgRemoteStatusUpdater(HgChangesetStatus incomingStatus, HgChangesetStatus outgoingStatus, HgProjectSettings projectSettings) {
+  public HgRemoteStatusUpdater(@NotNull HgVcs vcs, HgChangesetStatus incomingStatus, HgChangesetStatus outgoingStatus, HgProjectSettings projectSettings) {
+    myVcs = vcs;
     myIncomingStatus = incomingStatus;
     myOutgoingStatus = outgoingStatus;
     myProjectSettings = projectSettings;
@@ -56,7 +59,7 @@ class HgRemoteStatusUpdater implements HgUpdater {
         new Task.Backgroundable(project, getProgressTitle(), true) {
           public void run(@NotNull ProgressIndicator indicator) {
             if (project.isDisposed()) return;
-            VcsRoot[] roots = ProjectLevelVcsManager.getInstance(project).getAllVcsRoots();
+            VirtualFile[] roots = ProjectLevelVcsManager.getInstance(project).getRootsUnderVcs(myVcs);
             if (myProjectSettings.isCheckIncoming()) {
               updateChangesetStatus(project, roots, myIncomingStatus, true);
             }
@@ -71,13 +74,13 @@ class HgRemoteStatusUpdater implements HgUpdater {
     });
   }
 
-  private void updateChangesetStatus(Project project, VcsRoot[] roots, HgChangesetStatus status, boolean incoming) {
+  private void updateChangesetStatus(Project project, VirtualFile[] roots, HgChangesetStatus status, boolean incoming) {
     final List<HgRevisionNumber> changesets = new LinkedList<HgRevisionNumber>();
-    for (VcsRoot root : roots) {
+    for (VirtualFile root : roots) {
       if (incoming) {
-        changesets.addAll(new HgIncomingCommand(project).execute(root.path));
+        changesets.addAll(new HgIncomingCommand(project).execute(root));
       } else {
-        changesets.addAll(new HgOutgoingCommand(project).execute(root.path));
+        changesets.addAll(new HgOutgoingCommand(project).execute(root));
       }
     }
     status.setChanges(changesets.size(), new ChangesetFormatter(status, changesets));
index 0afbaf0ec6b431363ce4144e913acfe29f065a09..e31ce35df47a00f66b62722d97104e04bd75dd2d 100644 (file)
@@ -276,7 +276,7 @@ public class HgVcs extends AbstractVcs<CommittedChangeList> {
     }
 
     // updaters and listeners
-    final HgRemoteStatusUpdater remoteUpdater = new HgRemoteStatusUpdater(incomingChangesStatus, outgoingChangesStatus, projectSettings);
+    final HgRemoteStatusUpdater remoteUpdater = new HgRemoteStatusUpdater(this, incomingChangesStatus, outgoingChangesStatus, projectSettings);
     changesUpdaterScheduledFuture = JobScheduler.getScheduler().scheduleWithFixedDelay(
       new Runnable() {
         public void run() {