SVNErrorManager.error("svn: The location for '" + path != null ? path.toString() : url + "' for revision " + endRev  + " does not exist in repository" +
SVNErrorManager.error("svn: The location for '" + (path != null ? path.toString() : url) + "' for revision " + endRev  + " does not exist in repository" +
    protected RepositoryReference[] getURLRange(File path, String url, SVNRevision revision, SVNRevision start, SVNRevision end) throws SVNException {        if (!revision.isValid() || !start.isValid()) {            SVNErrorManager.error("svn: bad revision for getURL2");        }        long pegRevision = -1;        if (path != null) {            SVNEntry entry = getEntry(path);            if (entry == null) {                SVNErrorManager.error("svn: '" + path + "' is not under version control");                return null;            }            if (entry.getCopyFromURL() != null && revision == SVNRevision.WORKING) {                url = entry.getCopyFromURL();                pegRevision = entry.getCopyFromRevision();            } else if (entry.getURL() != null) {                url = entry.getURL();            } else if (url == null) {                SVNErrorManager.error("svn: '" + path + "' has no URL");            }        }        SVNRepository repos = createRepository(url);        long startRev = getRevisionNumber(path, url, repos, start);        long endRev = startRev;        if (end.isValid()) {            endRev = getRevisionNumber(path, url, repos, end);        }        if (pegRevision < 0) {            pegRevision = getRevisionNumber(path, url, repos, revision);        }        String rootPath = repos.getRepositoryRoot(true);        List locations = (List) repos.getLocations("", new ArrayList(2), pegRevision, startRev == endRev ? new long[] {startRev} : new long[] {startRev, endRev});        SVNLocationEntry endLocation = null;        SVNLocationEntry startLocation = null;        if (locations != null && startRev == endRev && locations.size() == 1) {            startLocation = (SVNLocationEntry) locations.get(0);            endLocation = (SVNLocationEntry) locations.get(0);        } else if (locations != null && startRev != endRev && locations.size() == 2) {            startLocation = (SVNLocationEntry) locations.get(0);            endLocation = (SVNLocationEntry) locations.get(1);            if (startLocation.getRevision() != startRev) {                SVNLocationEntry tmp = startLocation;                startLocation = endLocation;                endLocation = tmp;            }        }        if (startLocation == null) {            SVNErrorManager.error("svn: Unable to find repository location for '" + path != null ? path.toString() : url + "' in revision " + startRev);            return null;        }        if (endLocation == null) {            SVNErrorManager.error("svn: The location for '" + path != null ? path.toString() : url + "' for revision " + endRev  + " does not exist in repository" +                " or refers to an unrelated object");            return null;        }        String host = url.substring(0, url.indexOf('/', url.indexOf("://") + 3));        String startPath = host + PathUtil.encode(PathUtil.append(rootPath, startLocation.getPath()));        String endPath = host + PathUtil.encode(PathUtil.append(rootPath,  endLocation.getPath()));        return new RepositoryReference[] {new RepositoryReference(startPath, startRev), new RepositoryReference(endPath, endRev)};    }