diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/BaseMergeTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/BaseMergeTask.java index 264067c150c0..c72ec0a7e3f1 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/BaseMergeTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/BaseMergeTask.java @@ -93,9 +93,9 @@ public abstract class BaseMergeTask extends TaskDescriptor { } protected void merge(@NotNull String title, @NotNull MergerFactory mergerFactory, @Nullable List changeLists) { - next(new LocalChangesPromptTask(myMergeProcess, changeLists), - new MergeTask(myMergeProcess, () -> - newIntegrateTask(title, mergerFactory).queue())); + next(new LocalChangesPromptTask(myMergeProcess, changeLists, () -> + next(new MergeTask(myMergeProcess, () -> + newIntegrateTask(title, mergerFactory).queue())))); } @NotNull diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LocalChangesPromptTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LocalChangesPromptTask.java index 8da1a2dcb9de..cbcf7f4f50fb 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LocalChangesPromptTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LocalChangesPromptTask.java @@ -45,10 +45,14 @@ import static org.tmatesoft.svn.core.internal.util.SVNPathUtil.getRelativePath; public class LocalChangesPromptTask extends BaseMergeTask { @Nullable private final List myChangeListsToMerge; + @NotNull private final Runnable myCallback; - public LocalChangesPromptTask(@NotNull QuickMerge mergeProcess, @Nullable List changeListsToMerge) { + public LocalChangesPromptTask(@NotNull QuickMerge mergeProcess, + @Nullable List changeListsToMerge, + @NotNull Runnable callback) { super(mergeProcess, "local changes intersection check", Where.AWT); myChangeListsToMerge = changeListsToMerge; + myCallback = callback; } @Nullable @@ -75,18 +79,16 @@ public class LocalChangesPromptTask extends BaseMergeTask { switch (nextAction) { case continueMerge: + myCallback.run(); break; case shelve: - next(new ShelveLocalChangesTask(myMergeProcess, intersection)); - break; - case cancel: - end(); + next(new ShelveLocalChangesTask(myMergeProcess, intersection, myCallback)); break; case inspect: List intersectedPaths = sorted(getPaths(intersection.getAllChanges()), FilePathByPathComparator.getInstance()); - myInteraction.showIntersectedLocalPaths(intersectedPaths); - end(); + break; + case cancel: break; } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShelveLocalChangesTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShelveLocalChangesTask.java index 02fc86b2229c..1986e8d85cd7 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShelveLocalChangesTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShelveLocalChangesTask.java @@ -31,17 +31,19 @@ import static com.intellij.openapi.application.ApplicationManager.getApplication public class ShelveLocalChangesTask extends BaseMergeTask { @NotNull private final Intersection myIntersection; + @NotNull private final Runnable myCallback; - public ShelveLocalChangesTask(@NotNull QuickMerge mergeProcess, @NotNull Intersection intersection) { + public ShelveLocalChangesTask(@NotNull QuickMerge mergeProcess, @NotNull Intersection intersection, @NotNull Runnable callback) { super(mergeProcess, "Shelving local changes before merge", Where.POOLED); - myIntersection = intersection; + myCallback = callback; } @Override public void run() throws VcsException { try { shelveChanges(); + myCallback.run(); } catch (IOException e) { throw new VcsException(e);