List<VcsException> (@NotNull SvnVcs vcs, List<? extends VirtualFile> files, final boolean recursive) { files.sort(FilePathComparator.getInstance()); ProgressTracker eventHandler = new SvnProgressCanceller() { @Override public void consume(ProgressEvent event) { // TODO: indicator is null here when invoking "Add" action ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator(); File file = event.getFile(); if (indicator != null && file != null) { indicator.setText(SvnBundle.message("progress.text2.adding", file.getName() + " (" + file.getParent() + ")")); } } }; List<VcsException> exceptions = new ArrayList<>(); Depth depth = Depth.allOrEmpty(recursive); for (VirtualFile file : files) { try { File convertedFile = VfsUtilCore.virtualToIoFile(file); vcs.getFactory(convertedFile).createAddClient().add(convertedFile, depth, true, false, true, eventHandler); } catch (VcsException e) { exceptions.add(e); } } return exceptions; }