doGetFileContents(url, SVNRevision.create(pegRevisionNumber), SVNRevision.create(revNumber), expandKeywords, dst);
repos.getFile("", revNumber, null, dst);
    public void doGetFileContents(File path, SVNRevision pegRevision,            SVNRevision revision, boolean expandKeywords, OutputStream dst)            throws SVNException {        if (dst == null) {            return;        }        if (revision == null || !revision.isValid()) {            revision = SVNRevision.WORKING;        }        if (revision == SVNRevision.COMMITTED) {            revision = SVNRevision.BASE;        }        SVNWCAccess wcAccess = createWCAccess(path);        if ("".equals(wcAccess.getTargetName())                || wcAccess.getTarget() != wcAccess.getAnchor()) {            SVNErrorManager.error("svn: '" + path + "' refers to a directory");        }        String name = wcAccess.getTargetName();        if (revision == SVNRevision.WORKING || revision == SVNRevision.BASE) {            File file = wcAccess.getAnchor().getBaseFile(name, false);            boolean delete = false;            SVNEntry entry = wcAccess.getAnchor().getEntries().getEntry(wcAccess.getTargetName(), false);            if (entry == null) {                SVNErrorManager.error("svn: '" + path                        + "' is not under version control or doesn't exist");            }            try {                if (revision == SVNRevision.BASE) {                    if (expandKeywords) {                        delete = true;                        file = wcAccess.getAnchor().getBaseFile(name, true).getParentFile();                        file = SVNFileUtil.createUniqueFile(file, name, ".tmp");                        SVNTranslator.translate(wcAccess.getAnchor(), name,                                SVNFileUtil.getBasePath(wcAccess.getAnchor()                                        .getBaseFile(name, false)), SVNFileUtil                                        .getBasePath(file), true, false);                    }                } else {                    if (!expandKeywords) {                        delete = true;                        file = wcAccess.getAnchor().getBaseFile(name, true).getParentFile();                        file = SVNFileUtil.createUniqueFile(file, name, ".tmp");                        SVNTranslator.translate(wcAccess.getAnchor(), name,                                name, SVNFileUtil.getBasePath(file), false,                                false);                    } else {                        file = wcAccess.getAnchor().getFile(name);                    }                }            } finally {                if (file != null && file.exists()) {                    InputStream is = SVNFileUtil.openFileForReading(file);                    try {                        int r;                        while ((r = is.read()) >= 0) {                            dst.write(r);                        }                    } catch (IOException e) {                        SVNDebugLog.logInfo(e);                    } finally {                        SVNFileUtil.closeFile(is);                        if (delete) {                            file.delete();                        }                    }                }            }        } else {            SVNEntry entry = wcAccess.getTargetEntry();            SVNURL url = entry.getSVNURL();            SVNRepository repos = createRepository(url, path, pegRevision, revision);            url = repos.getLocation();            long revNumber = getRevisionNumber(revision, repos, path);            long pegRevisionNumber = repos.getPegRevision();            if (!expandKeywords) {                doGetFileContents(url, SVNRevision.create(pegRevisionNumber), SVNRevision.create(revNumber), expandKeywords, dst);            } else {                File tmpFile = SVNFileUtil.createUniqueFile(new File(path                        .getParentFile(), ".svn/tmp/text-base"),                        path.getName(), ".tmp");                File tmpFile2 = null;                OutputStream os = null;                InputStream is = null;                try {                    os = SVNFileUtil.openFileForWriting(tmpFile);                    doGetFileContents(url, SVNRevision.create(pegRevisionNumber), SVNRevision.create(revNumber), false, os);                    SVNFileUtil.closeFile(os);                    os = null;                    // translate                    tmpFile2 = SVNFileUtil.createUniqueFile(new File(path                            .getParentFile(), ".svn/tmp/text-base"), path                            .getName(), ".tmp");                    boolean special = wcAccess.getAnchor().getProperties(                            path.getName(), false).getPropertyValue(                            SVNProperty.SPECIAL) != null;                    if (special) {                        tmpFile2 = tmpFile;                    } else {                        SVNTranslator.translate(wcAccess.getAnchor(), path                                .getName(), SVNFileUtil.getBasePath(tmpFile),                                SVNFileUtil.getBasePath(tmpFile2), true, false);                    }                    // cat tmp file                    is = SVNFileUtil.openFileForReading(tmpFile2);                    int r;                    while ((r = is.read()) >= 0) {                        dst.write(r);                    }                } catch (IOException e) {                    SVNErrorManager.error("svn: " + e.getMessage());                } finally {                    SVNFileUtil.closeFile(os);                    SVNFileUtil.closeFile(is);                    if (tmpFile != null) {                        tmpFile.delete();                    }                    if (tmpFile2 != null) {                        tmpFile2.delete();                    }                }            }        }    }