diff --git a/base/src/com/google/idea/blaze/base/sync/BlazeSyncManager.java b/base/src/com/google/idea/blaze/base/sync/BlazeSyncManager.java index defe1b0ae64..6a342718a71 100644 --- a/base/src/com/google/idea/blaze/base/sync/BlazeSyncManager.java +++ b/base/src/com/google/idea/blaze/base/sync/BlazeSyncManager.java @@ -156,7 +156,7 @@ public void requestProjectSync(BlazeSyncParams syncParams) { try { projectState = ProjectStateSyncTask.collectProjectState( - project, context); + project, context, syncParams); } catch (SyncCanceledException | SyncFailedException e) { ApplicationManager.getApplication() .invokeLater( diff --git a/base/src/com/google/idea/blaze/base/sync/ProjectStateSyncTask.java b/base/src/com/google/idea/blaze/base/sync/ProjectStateSyncTask.java index cb276dfc243..011e8cdebe6 100644 --- a/base/src/com/google/idea/blaze/base/sync/ProjectStateSyncTask.java +++ b/base/src/com/google/idea/blaze/base/sync/ProjectStateSyncTask.java @@ -17,6 +17,7 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.idea.blaze.base.async.FutureUtil; @@ -61,10 +62,10 @@ /** Collects information about the project state (VCS, blaze info, .blazeproject contents, etc.). */ final class ProjectStateSyncTask { - static SyncProjectState collectProjectState(Project project, BlazeContext context) + static SyncProjectState collectProjectState(Project project, BlazeContext context, BlazeSyncParams syncParams) throws SyncCanceledException, SyncFailedException { ProjectStateSyncTask task = new ProjectStateSyncTask(project); - return task.getProjectState(context); + return task.getProjectState(context, syncParams); } private final Project project; @@ -77,7 +78,7 @@ private ProjectStateSyncTask(Project project) { this.workspaceRoot = WorkspaceRoot.fromImportSettings(importSettings); } - private SyncProjectState getProjectState(BlazeContext context) + private SyncProjectState getProjectState(BlazeContext context, BlazeSyncParams params) throws SyncFailedException, SyncCanceledException { if (!FileOperationProvider.getInstance().exists(workspaceRoot.directory())) { String message = String.format("Workspace '%s' doesn't exist.", workspaceRoot.directory()); @@ -124,7 +125,12 @@ private SyncProjectState getProjectState(BlazeContext context) importSettings.getBuildSystem(), syncFlags); - ListenableFuture workingSetFuture = vcsHandler.getWorkingSet(context, executor); + ListenableFuture workingSetFuture; + if(params.addWorkingSet() || params.syncMode() == SyncMode.FULL) { + workingSetFuture = vcsHandler.getWorkingSet(context, executor); + } else { + workingSetFuture = Futures.immediateFuture(null); + } BlazeInfo blazeInfo = FutureUtil.waitForFuture(context, blazeInfoFuture) diff --git a/base/src/com/google/idea/blaze/base/sync/SyncPhaseCoordinator.java b/base/src/com/google/idea/blaze/base/sync/SyncPhaseCoordinator.java index d96202016f2..632d6d70a3b 100644 --- a/base/src/com/google/idea/blaze/base/sync/SyncPhaseCoordinator.java +++ b/base/src/com/google/idea/blaze/base/sync/SyncPhaseCoordinator.java @@ -361,7 +361,7 @@ private void doFilterProjectTargets( context, childContext -> { SyncProjectState projectState = - ProjectStateSyncTask.collectProjectState(project, context); + ProjectStateSyncTask.collectProjectState(project, context, params); if (projectState == null) { return; } @@ -436,7 +436,7 @@ void runSync(BlazeSyncParams params, boolean singleThreaded, BlazeContext contex SyncStats.builder()); return; } - SyncProjectState projectState = ProjectStateSyncTask.collectProjectState(project, context); + SyncProjectState projectState = ProjectStateSyncTask.collectProjectState(project, context, params); BlazeSyncBuildResult buildResult = BuildPhaseSyncTask.runBuildPhase( project, params, projectState, buildId, context, buildSystem);