if (!reportAll) {
if (!reportAll && !missing) {
    private void reportEntries(ISVNReporter reporter, SVNDirectory directory, String dirPath, boolean reportAll, boolean recursive) throws SVNException {        SVNEntries entries = directory.getEntries();        long baseRevision = entries.getEntry("", true).getRevision();        SVNExternalInfo[] externals = myWCAccess.addExternals(directory, directory.getProperties("", false).getPropertyValue(SVNProperty.EXTERNALS));        for (int i = 0; externals != null && i < externals.length; i++) {            externals[i].setOldExternal(externals[i].getNewURL(), externals[i].getNewRevision());        }        for (Iterator e = entries.entries(true); e.hasNext();) {            SVNEntry entry = (SVNEntry) e.next();            if ("".equals(entry.getName())) {                continue;            }            String path = "".equals(dirPath) ? entry.getName() : SVNPathUtil.append(dirPath, entry.getName());            if (entry.isDeleted() || entry.isAbsent()) {                if (!reportAll) {                    reporter.deletePath(path);                }                continue;            }            if (entry.isScheduledForAddition()) {                continue;            }            File file = directory.getFile(entry.getName());            SVNFileType fileType = SVNFileType.getType(file);            boolean missing = fileType == SVNFileType.NONE;            if (entry.isFile()) {                if (!reportAll) {                    // local file could be of different kind.                     // if so report as deleted.                    // check svn:special files -> symlinks that could be directory.                    boolean special = !SVNFileUtil.isWindows && directory.getProperties(entry.getName(), false).getPropertyValue(SVNProperty.SPECIAL) != null;                    SVNFileType expectedType = special ? SVNFileType.SYMLINK : SVNFileType.FILE;                    if (fileType != expectedType) {                        reporter.deletePath(path);                        continue;                    }                }                if (missing && !entry.isScheduledForDeletion() && !entry.isScheduledForReplacement()) {                    restoreFile(directory, entry.getName());                }                String url = entry.getURL();                String parentURL = entries.getPropertyValue("", SVNProperty.URL);                String expectedURL = SVNPathUtil.append(parentURL, SVNEncodingUtil.uriEncode(entry.getName()));                if (reportAll) {                    if (!url.equals(expectedURL) && !entry.isScheduledForAddition() && !entry.isScheduledForReplacement()) {                        SVNURL svnURL = SVNURL.parseURIEncoded(url);                        reporter.linkPath(svnURL, path, entry.getLockToken(), entry.getRevision(), false);                    } else {                        reporter.setPath(path, entry.getLockToken(), entry.getRevision(), false);                    }                } else if (!entry.isScheduledForReplacement() && !url.equals(expectedURL)) {                    // link path                    SVNURL svnURL = SVNURL.parseURIEncoded(url);                    reporter.linkPath(svnURL, path, entry.getLockToken(), entry.getRevision(), false);                } else if (entry.getRevision() != baseRevision || entry.getLockToken() != null) {                    reporter.setPath(path, entry.getLockToken(), entry.getRevision(), false);                }            } else if (entry.isDirectory() && recursive) {                if (missing || directory.getChildDirectory(entry.getName()) == null) {                    if (!reportAll) {                        reporter.deletePath(path);                    }                    continue;                }                if (file.isFile()) {                    SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.WC_OBSTRUCTED_UPDATE, "The entry ''{0}'' is no longer a directory; remove the entry before updating", file);                    SVNErrorManager.error(err);                }                SVNDirectory childDir = directory.getChildDirectory(entry.getName());                SVNEntry childEntry = childDir.getEntries().getEntry("", true);                String url = childEntry.getURL();                if (reportAll) {                    if (!url.equals(entry.getURL())) {                        SVNURL svnURL = SVNURL.parseURIEncoded(url);                        reporter.linkPath(svnURL, path, childEntry.getLockToken(), childEntry.getRevision(), childEntry.isIncomplete());                    } else {                        reporter.setPath(path, childEntry.getLockToken(), childEntry.getRevision(), childEntry.isIncomplete());                    }                } else if (!url.equals(entry.getURL())) {                    SVNURL svnURL = SVNURL.parseURIEncoded(url);                    reporter.linkPath(svnURL, path, childEntry.getLockToken(), childEntry.getRevision(), childEntry.isIncomplete());                } else if (childEntry.getLockToken() != null || childEntry.getRevision() != baseRevision) {                    reporter.setPath(path, childEntry.getLockToken(), childEntry.getRevision(), childEntry.isIncomplete());                }                reportEntries(reporter, childDir, path, childEntry.isIncomplete(), recursive);            }        }    }