public void perform( @NotNull Project project, com.assembla.git.GitVcs mksVcs, @NotNull List<VcsException> exceptions, @NotNull VirtualFile[] affectedFiles) throws VcsException { ApplicationManager.getApplication() .runWriteAction( new Runnable() { public void run() { FileDocumentManager.getInstance().saveAllDocuments(); } }); if (!ProjectLevelVcsManager.getInstance(project) .checkAllFilesAreUnder(com.assembla.git.GitVcs.getInstance(project), affectedFiles)) return; final Map<VirtualFile, List<VirtualFile>> roots = com.assembla.git.GitUtil.sortFilesByVcsRoot(project, affectedFiles); for (VirtualFile root : roots.keySet()) { com.assembla.git.commands.GitCommand command = new com.assembla.git.commands.GitCommand( project, com.assembla.git.GitVcsSettings.getInstance(project), root); command.delete(roots.get(root)); } VcsDirtyScopeManager mgr = VcsDirtyScopeManager.getInstance(project); for (VirtualFile file : affectedFiles) { mgr.fileDirty(file); file.refresh(true, true); } }
// 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); } } }