void (@NotNull final AlienDirtyScope dirtyScope) { new Task.Backgroundable(myVcs.getProject(), message("action.Subversion.integrate.changes.collecting.changes.to.commit.task.title")) { private final GatheringChangelistBuilder changesBuilder = new GatheringChangelistBuilder(myVcs, myAccumulatedFiles); private final Ref<@Nls String> caughtError = new Ref<>(); @Override public void run(@NotNull ProgressIndicator indicator) { indicator.setIndeterminate(true); if (!myVcs.getProject().isDisposed()) { try { new SvnChangeProvider(myVcs).getChanges(dirtyScope, changesBuilder, indicator, new FakeGate()); } catch (VcsException e) { caughtError.set(message("action.Subversion.integrate.changes.error.unable.to.collect.changes.text", e.getMessage())); } } } @Override public void onSuccess() { if (!caughtError.isNull()) { VcsBalloonProblemNotifier.showOverVersionControlView(myVcs.getProject(), caughtError.get(), MessageType.ERROR); } else if (!changesBuilder.getChanges().isEmpty()) { AlienCommitWorkflow workflow = new AlienCommitWorkflow(myVcs, myMerger.getComment(), changesBuilder.getChanges(), myMerger.getComment()); AlienCommitChangeListDialog dialog = new AlienCommitChangeListDialog(workflow); new SingleChangeListCommitWorkflowHandler(workflow, dialog).activate(); } } }.queue(); }