diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java index f07f133cfe86..bc3e7784117e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java @@ -90,7 +90,12 @@ public interface MergeVersion { public void applyText(final String text, final Project project) { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { - doApplyText(text, project); + CommandProcessor.getInstance().executeCommand(project, new Runnable() { + @Override + public void run() { + doApplyText(text, project); + } + }, "Merge changes", null); } }); } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/merge/MultipleFileMergeDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/merge/MultipleFileMergeDialog.java index 1fe8cf89fe14..ff4c188b847c 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/merge/MultipleFileMergeDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/merge/MultipleFileMergeDialog.java @@ -19,6 +19,7 @@ package com.intellij.openapi.vcs.merge; import com.intellij.CommonBundle; import com.intellij.ide.presentation.VirtualFilePresentation; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diff.ActionButtonPresentation; import com.intellij.openapi.diff.DiffManager; import com.intellij.openapi.diff.DiffRequestFactory; @@ -221,22 +222,27 @@ public class MultipleFileMergeDialog extends DialogWrapper { final Ref ex = new Ref(); ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { - try { - if (!(myProvider instanceof MergeProvider2) || myMergeSession.canMerge(file)) { - MergeData data = myProvider.loadRevisions(file); - if (isCurrent) { - file.setBinaryContent(data.CURRENT); + CommandProcessor.getInstance().executeCommand(myProject, new Runnable() { + @Override + public void run() { + try { + if (!(myProvider instanceof MergeProvider2) || myMergeSession.canMerge(file)) { + MergeData data = myProvider.loadRevisions(file); + if (isCurrent) { + file.setBinaryContent(data.CURRENT); + } + else { + file.setBinaryContent(data.LAST); + checkMarkModifiedProject(file); + } + } + markFileProcessed(file, isCurrent ? MergeSession.Resolution.AcceptedYours : MergeSession.Resolution.AcceptedTheirs); } - else { - file.setBinaryContent(data.LAST); - checkMarkModifiedProject(file); + catch (Exception e) { + ex.set(e); } } - markFileProcessed(file, isCurrent ? MergeSession.Resolution.AcceptedYours : MergeSession.Resolution.AcceptedTheirs); - } - catch (Exception e) { - ex.set(e); - } + }, "Accept " + (isCurrent ? "Yours" : "Theirs"), null); } }); if (!ex.isNull()) { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java index d0a300d97200..2cfb117b2719 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java @@ -388,9 +388,6 @@ public abstract class AbstractCommonUpdateAction extends AbstractVcsAction { ProgressManager.progress(VcsBundle.message("progress.text.synchronizing.files")); doVfsRefresh(); } finally { - if (myProject.isOpen() && (! myProject.isDisposed())) { // not sure - myAfter = LocalHistory.getInstance().putSystemLabel(myProject, "After update"); - } myProjectLevelVcsManager.stopBackgroundVcsOperation(); myProject.getMessageBus().syncPublisher(UpdatedFilesListener.UPDATED_FILES). consume(UpdatedFilesReverseSide.getPathsFromUpdatedFiles(myUpdatedFiles)); @@ -480,9 +477,12 @@ public abstract class AbstractCommonUpdateAction extends AbstractVcsAction { final boolean continueChainFinal = continueChain; final boolean someSessionWasCancelled = wasCanceled || someSessionWasCanceled(myUpdateSessions); + // here text conflicts might be interactively resolved for (final UpdateSession updateSession : myUpdateSessions) { updateSession.onRefreshFilesCompleted(); } + // only after conflicts are resolved, put a label + myAfter = LocalHistory.getInstance().putSystemLabel(myProject, "After update"); if (myActionInfo.canChangeFileStatus()) { final List files = new ArrayList();