SVNLocationEntry copyfromEntry = copiedFrom(reposRootDir, root.getRootRevisionNode(), changedPath, revNodesPool);
SVNLocationEntry copyfromEntry = copiedFrom(reposRootDir, root, changedPath, revNodesPool);
    public static Map detectChanged(File reposRootDir, FSRevisionNodePool revNodesPool, FSRoot root) throws SVNException {        Map changedPaths = new HashMap();        Map changes = getChangedPaths(reposRootDir, root);                if(changes.size() == 0){            /* No paths changed in this revision?  Uh, sure, I guess the             * revision is readable, then.               */            return changes;        }        for(Iterator paths = changes.keySet().iterator(); paths.hasNext();){            String changedPath = (String)paths.next();            FSPathChange change = (FSPathChange)changes.get(changedPath);            if(change.getChangeKind() == FSPathChangeKind.FS_PATH_CHANGE_RESET){                continue;            }            char action = change.getChangeKind().toString().toUpperCase().charAt(0);            long copyfromRevision = FSConstants.SVN_INVALID_REVNUM;            String copyfromPath = null;            if(change.getChangeKind() == FSPathChangeKind.FS_PATH_CHANGE_ADD || change.getChangeKind() == FSPathChangeKind.FS_PATH_CHANGE_REPLACE){                SVNLocationEntry copyfromEntry = copiedFrom(reposRootDir, root.getRootRevisionNode(), changedPath, revNodesPool);                if(copyfromEntry.getPath() != null && FSRepository.isValidRevision(copyfromEntry.getRevision())){                    copyfromPath = copyfromEntry.getPath();                    copyfromRevision = copyfromEntry.getRevision();                }                            }            changedPaths.put(changedPath, new SVNLogEntryPath(changedPath, action, copyfromPath, copyfromRevision));        }        return changedPaths;    }