void () { myFromToModified.sort((o1, o2) -> FileUtil.compareFiles(o1.getTo(), o2.getTo())); for (CopiedAsideInfo info : myFromToModified) { if (info.getParentImmediateReverted().exists()) { // parent successfully renamed/moved try { final File from = info.getFrom(); final File target = info.getTo(); if (from != null && !FileUtil.filesEqual(from, target) && !target.exists()) { SvnFileSystemListener.moveFileWithSvn(myVcs, from, target); } final File root = info.getTmpPlace(); if (root == null) continue; if (!root.isDirectory()) { if (target.exists()) { FileUtil.copy(root, target); } else { FileUtil.rename(root, target); } } else { FileUtil.processFilesRecursively(root, file -> { if (file.isDirectory()) return true; String relativePath = FileUtil.getRelativePath(root.getPath(), file.getPath(), File.separatorChar); File newFile = new File(target, relativePath); newFile.getParentFile().mkdirs(); try { if (target.exists()) { FileUtil.copy(file, newFile); } else { FileUtil.rename(file, newFile); } } catch (IOException e) { myExceptions.add(new VcsException(e)); } return true; }); } } catch (IOException e) { myExceptions.add(new VcsException(e)); } catch (VcsException e) { myExceptions.add(e); } } } applyProperties(); }