Collection<VirtualFile> (@NotNull VirtualFile root, @NotNull Collection<? extends VirtualFile> files) { GitRepository repository = myRepositoryManager.getRepositoryForRoot(root); if (repository == null) { LOG.warn("Repository is null for " + root); return Collections.emptyList(); } Collection<String> interestingAttributes = Arrays.asList(GitAttribute.TEXT.getName(), GitAttribute.CRLF.getName()); GitCommandResult result = myGit.checkAttr(repository, interestingAttributes, files); if (!result.success()) { LOG.warn(String.format("Couldn't git check-attr. Attributes: %s, files: %s", interestingAttributes, files)); return Collections.emptyList(); } GitCheckAttrParser parser = GitCheckAttrParser.parse(result.getOutput()); Map<String, Collection<GitAttribute>> attributes = parser.getAttributes(); Collection<VirtualFile> filesWithoutAttrs = new ArrayList<>(); for (VirtualFile file : files) { ProgressIndicatorProvider.checkCanceled(); String relativePath = FileUtil.getRelativePath(root.getPath(), file.getPath(), '/'); Collection<GitAttribute> attrs = attributes.get(relativePath); if (attrs == null || !attrs.contains(GitAttribute.TEXT) && !attrs.contains(GitAttribute.CRLF)) { filesWithoutAttrs.add(file); } } return filesWithoutAttrs; }