git4idea: IDEADEV-38333: fixed too early sending of notification
authorConstantine Plotnikov <Constantine.Plotnikov@jetbrains.com>
Thu, 2 Jul 2009 14:17:29 +0000 (18:17 +0400)
committerConstantine Plotnikov <Constantine.Plotnikov@jetbrains.com>
Thu, 2 Jul 2009 14:17:29 +0000 (18:17 +0400)
plugins/git4idea/src/git4idea/vfs/GitRootTracker.java

index 8243b4b05f93cff519c000dc04cd7f63e5ca369e..0f8096b0349af66dff399e34a74d09d5ebac3343 100644 (file)
@@ -25,6 +25,7 @@ import com.intellij.openapi.command.CommandEvent;
 import com.intellij.openapi.command.CommandListener;
 import com.intellij.openapi.command.CommandProcessor;
 import com.intellij.openapi.project.Project;
+import com.intellij.openapi.startup.StartupManager;
 import com.intellij.openapi.ui.Messages;
 import com.intellij.openapi.vcs.ProjectLevelVcsManager;
 import com.intellij.openapi.vcs.VcsDirectoryMapping;
@@ -61,6 +62,10 @@ public class GitRootTracker implements VcsListener {
    * The vcs instance
    */
   private final GitVcs myVcs;
+  /**
+   * If true, the tracking is enabled.
+   */
+  private final AtomicBoolean myIsEnabled = new AtomicBoolean(false);
   /**
    * If true, the root configuration has been possibly invalidated
    */
@@ -137,7 +142,12 @@ public class GitRootTracker implements VcsListener {
       }
     };
     fileManager.addVirtualFileManagerListener(myVirtualFileManagerListener);
-    checkRoots(true);
+    StartupManager.getInstance(myProject).runWhenProjectIsInitialized(new Runnable() {
+      public void run() {
+        myIsEnabled.set(true);
+        checkRoots(true);
+      }
+    });
   }
 
   /**
@@ -167,7 +177,7 @@ public class GitRootTracker implements VcsListener {
    * @param rootsChanged
    */
   private void checkRoots(boolean rootsChanged) {
-    if (!rootsChanged && !myHasGitRoots.get()) {
+    if (!myIsEnabled.get() || (!rootsChanged && !myHasGitRoots.get())) {
       return;
     }
     ApplicationManager.getApplication().runReadAction(new Runnable() {