import com.intellij.util.continuation.ContinuationPause;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.TestOnly;
import java.io.File;
import java.util.Collection;
public abstract void invokeAfterUpdate(final Runnable afterUpdate, final InvokeAfterUpdateMode mode, final String title,
final Consumer<VcsDirtyScopeManager> dirtyScopeManager,
final ModalityState state);
+ @TestOnly
public abstract boolean ensureUpToDate(boolean canBeCanceled);
public abstract List<LocalChangeList> getChangeListsCopy();
*
* runnable is invoked on AWT thread
*/
- public void invokeAfterUpdate(final Runnable afterUpdate, final InvokeAfterUpdateMode mode, final String title, final ModalityState state) {
+ public void invokeAfterUpdate(final Runnable afterUpdate, final InvokeAfterUpdateMode mode, @Nullable final String title, @Nullable final ModalityState state) {
myUpdater.invokeAfterUpdate(afterUpdate, mode, title, null, state);
}
import com.intellij.util.Consumer;
import com.intellij.util.concurrency.Semaphore;
import com.intellij.util.io.storage.HeavyProcessLatch;
+import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.ArrayList;
}
public void invokeAfterUpdate(final Runnable afterUpdate, final InvokeAfterUpdateMode mode, final String title,
- final Consumer<VcsDirtyScopeManager> dirtyScopeManagerFiller, final ModalityState state) {
+ @Nullable final Consumer<VcsDirtyScopeManager> dirtyScopeManagerFiller, final ModalityState state) {
LOG.debug("invokeAfterUpdate for project: " + myProject.getName());
final CallbackData data = CallbackData.create(afterUpdate, title, state, mode, myProject);
import com.intellij.openapi.vcs.VcsOutgoingChangesProvider;
import com.intellij.openapi.vcs.changes.ChangeListManager;
import com.intellij.openapi.vcs.changes.ChangeListManagerImpl;
+import com.intellij.openapi.vcs.changes.InvokeAfterUpdateMode;
import com.intellij.openapi.vcs.changes.actions.RefreshAction;
import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.util.concurrency.Semaphore;
import com.intellij.util.containers.HashSet;
import git4idea.GitDeprecatedRemote;
import git4idea.GitUtil;
files2Add.add(readmeFile);
}
final ChangeListManagerImpl changeListManager = (ChangeListManagerImpl)ChangeListManager.getInstance(project);
+
// Force update
- changeListManager.ensureUpToDate(false);
+ final Semaphore semaphore = new Semaphore();
+ semaphore.up();
+ changeListManager.invokeAfterUpdate(new Runnable() {
+ @Override
+ public void run() {
+ semaphore.down();
+ }
+ }, InvokeAfterUpdateMode.SILENT, null, null);
+ if (!semaphore.waitFor(30000)) {
+ exceptionRef.set(new VcsException("Too long VCS update"));
+ return;
+ }
+
for (VirtualFile file : changeListManager.getUnversionedFiles()) {
if (file.getPath().contains(".idea")) {
continue;