in cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsstatuses/CvsChangeProvider.java [441:503]
private static DirectoryContent getDirectoryContent(VirtualFile directory, final ProgressIndicator progress) {
if (LOG.isDebugEnabled()) {
LOG.debug("Retrieving directory content for " + directory);
}
final CvsInfo cvsInfo = CvsEntriesManager.getInstance().getCvsInfoFor(directory);
final DirectoryContent result = new DirectoryContent(cvsInfo);
final HashMap<String, VirtualFile> nameToFileMap = new HashMap<>();
for (VirtualFile child : CvsVfsUtil.getChildrenOf(directory)) {
nameToFileMap.put(child.getName(), child);
}
for (final Entry entry : cvsInfo.getEntries()) {
progress.checkCanceled();
final String fileName = entry.getFileName();
if (entry.isDirectory()) {
if (nameToFileMap.containsKey(fileName)) {
final VirtualFile virtualFile = nameToFileMap.get(fileName);
if (isInContent(virtualFile)) {
result.addDirectory(new VirtualFileEntry(virtualFile, entry));
}
}
else if (!entry.isRemoved() && !FileTypeManager.getInstance().isFileIgnored(fileName)) {
result.addDeletedDirectory(entry);
}
}
else {
if (nameToFileMap.containsKey(fileName) || entry.isRemoved()) {
final VirtualFile virtualFile = nameToFileMap.get(fileName);
if (isInContent(virtualFile)) {
result.addFile(new VirtualFileEntry(virtualFile, entry));
}
}
else if (!entry.isAddedFile()) {
result.addDeletedFile(entry);
}
}
nameToFileMap.remove(fileName);
}
for (final String name : nameToFileMap.keySet()) {
progress.checkCanceled();
final VirtualFile unknown = nameToFileMap.get(name);
if (unknown.isDirectory()) {
if (isInContent(unknown)) {
result.addUnknownDirectory(unknown);
}
}
else {
if (isInContent(unknown)) {
final boolean isIgnored = result.getCvsInfo().getIgnoreFilter().shouldBeIgnored(unknown);
if (isIgnored) {
result.addIgnoredFile(unknown);
}
else {
result.addUnknownFile(unknown);
}
}
}
}
return result;
}