private Map crawlDirectoryForMergeInfo(FSRevisionRoot root, String path, FSRevisionNode node,
Map result) throws SVNException {
FSFS fsfs = root.getOwner();
Map entries = node.getDirEntries(fsfs);
for (Iterator entriesIter = entries.values().iterator(); entriesIter.hasNext();) {
FSEntry entry = (FSEntry) entriesIter.next();
String kidPath = SVNPathUtil.getAbsolutePath(SVNPathUtil.append(path, entry.getName()));
FSRevisionNode kidNode = root.getRevisionNode(kidPath);
if (kidNode.hasMergeInfo()) {
SVNProperties propList = kidNode.getProperties(fsfs);
String mergeInfoString = propList.getStringValue(SVNProperty.MERGE_INFO);
if (mergeInfoString == null) {
SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.FS_CORRUPT,
"Node-revision #''{0}'' claims to have mergeinfo but doesn''t", entry.getId());
SVNErrorManager.error(err, SVNLogType.FSFS);
}
Map kidMergeInfo = SVNMergeInfoUtil.parseMergeInfo(new StringBuffer(mergeInfoString), null);
result.put(kidPath, kidMergeInfo);
}