// on EDT, dispose checked public void execute(final UpdatedFiles updatedFiles) { if (myConflictedVirtualFiles.isEmpty()) { return; } final AbstractVcsHelper vcsHelper = AbstractVcsHelper.getInstance(myProject); List<VirtualFile> mergedFiles = vcsHelper.showMergeDialog(myConflictedVirtualFiles, new SvnMergeProvider(myProject)); final FileGroup mergedGroup = updatedFiles.getGroupById(FileGroup.MERGED_ID); final FileGroup conflictedGroup = updatedFiles.getGroupById(FileGroup.MERGED_WITH_CONFLICT_ID); final VcsKey vcsKey = SvnVcs.getKey(); for (final VirtualFile mergedFile : mergedFiles) { String path = FileUtil.toSystemDependentName(mergedFile.getPresentableUrl()); conflictedGroup.remove(path); mergedGroup.add(path, vcsKey, null); mergedFile.refresh(false, false); // for additionally created files removal to be detected mergedFile.getParent().refresh(false, false); if (myChangesUnderProjectRoot) { myDirtyScopeManager.fileDirty(mergedFile); } } }
private void showMergeDialog(@NotNull final Collection<VirtualFile> initiallyUnmergedFiles) { ApplicationManager.getApplication() .invokeAndWait( () -> { MergeProvider mergeProvider = new GitMergeProvider(myProject, myParams.reverse); myVcsHelper.showMergeDialog( new ArrayList<>(initiallyUnmergedFiles), mergeProvider, myParams.myMergeDialogCustomizer); }, ModalityState.defaultModalityState()); }