FSRevisionNode revNode = myRevNodesPool.getRevisionNode(root, revPath, myReposRootDir);
FSRevisionNode revNode = myRevNodesPool.getRevisionNode(rootNode, revPath, myReposRootDir);
    public int getFileRevisions(String path, long startRevision, long endRevision, ISVNFileRevisionHandler handler) throws SVNException {		try{    		openRepository();    		path = getRepositoryPath(path);            long youngestRev = FSReader.getYoungestRevision(myReposRootDir);            if(FSRepository.isInvalidRevision(startRevision)){                startRevision = youngestRev;            }            if(startRevision > youngestRev){                SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.REPOS_BAD_ARGS, "No revision {0,number,integer} in repository", new Long(startRevision));                SVNErrorManager.error(err);            }            if(FSRepository.isInvalidRevision(endRevision)){                endRevision = youngestRev;            }            if(endRevision > youngestRev){                SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.REPOS_BAD_ARGS, "No revision {0,number,integer} in repository", new Long(endRevision));                SVNErrorManager.error(err);            }            long trueStart = FSConstants.SVN_INVALID_REVNUM;            long trueEnd = FSConstants.SVN_INVALID_REVNUM;            if(startRevision > endRevision){                trueStart = endRevision;                trueEnd = startRevision;             }else{                        trueStart = startRevision;                trueEnd = endRevision;            }                        String absolutePath = getRepositoryPath(path);                        ArrayList locationEntryArray = new ArrayList(0);            ArrayList fileRevs = new ArrayList(0);            FSRevisionNode root = myRevNodesPool.getRootRevisionNode(trueEnd, myReposRootDir);            SVNNodeKind kind = checkNodeKind(absolutePath, FSRoot.createRevisionRoot(trueEnd, root));            if(kind != SVNNodeKind.FILE){            	SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.FS_NOT_FILE, "''{0}'' is not a file", absolutePath);                SVNErrorManager.error(err);            }            FSNodeHistory history = FSNodeHistory.getNodeHistory(myReposRootDir, root, absolutePath);            //get revisions we are interested in            while(true){            	history = history.fsHistoryPrev(myReposRootDir, true, myRevNodesPool);            	            	if(history == null){            		break;            	}            	//SVNLocationEntry revEntry = history.getHistoryEntry();                long histRev = history.getHistoryEntry().getRevision();                String histPath = history.getHistoryEntry().getPath();            	                locationEntryArray.add(new SVNLocationEntry(histRev, histPath));           	                if(histRev <= trueStart){            		break;            	}            }            //this time there must be at least one revision            if(locationEntryArray.size() <= 0){            	//it is used for debugging only, svn's string is assert()            	SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.UNKNOWN, "FATAL error: there're no revisions to get");                SVNErrorManager.error(err);            }            Map lastProps = new HashMap();            for(int count = locationEntryArray.size(); count > 0; count--){                                long rev = ((SVNLocationEntry)locationEntryArray.get(count-1)).getRevision();                String revPath = ((SVNLocationEntry)locationEntryArray.get(count-1)).getPath();            	Map revProps = FSRepositoryUtil.getRevisionProperties(myReposRootDir, rev);                root = myRevNodesPool.getRootRevisionNode(rev, myReposRootDir);            	//Get the file's properties for this revision and compute the diffs                FSRevisionNode revNode = myRevNodesPool.getRevisionNode(root, revPath, myReposRootDir);            	Map props = FSReader.getProperties(revNode, myReposRootDir);            	Map propDiffs = FSRepositoryUtil.getPropsDiffs(props, lastProps);                fileRevs.add(new SVNFileRevision(revPath, rev, revProps, propDiffs));            	lastProps = props;            }            //invoke handler            int counter = 0;            int reallyHandled = 0;            for(counter = 0; counter < fileRevs.size(); counter++){                if(handler != null){                    handler.openRevision((SVNFileRevision)fileRevs.get(counter));                    reallyHandled++;                }            }            return reallyHandled;    	}        finally{            closeRepository();        }            }