logClient.doAnnotate(path, pegRevision, SVNRevision.UNDEFINED, endRevision, this);
logClient.doAnnotate(path, pegRevision, startRevision, endRevision, this);
    public void run(PrintStream out, PrintStream err) throws SVNException {        SVNLogClient logClient = getClientManager().getLogClient();        myIsVerbose = getCommandLine().hasArgument(SVNArgument.VERBOSE);        myPrintStream = out;        SVNRevision endRevision = parseRevision(getCommandLine());        if (endRevision == null || !endRevision.isValid()) {            endRevision = SVNRevision.HEAD;        }        for(int i = 0; i < getCommandLine().getURLCount(); i++) {            String url = getCommandLine().getURL(i);            SVNRevision pegRevision = getCommandLine().getPegRevision(i);            try {                logClient.doAnnotate(SVNURL.parseURIEncoded(url), pegRevision, SVNRevision.UNDEFINED, endRevision, this);            } catch (SVNException e) {                if (e.getMessage() != null && e.getMessage().indexOf("binary") >= 0) {                    out.println("Skipping binary file: '" + url + "'");                } else {                    throw e;                }            }        }        endRevision = parseRevision(getCommandLine());        if (endRevision == null || !endRevision.isValid()) {            endRevision = SVNRevision.BASE;        }        for(int i = 0; i < getCommandLine().getPathCount(); i++) {            File path = new File(getCommandLine().getPathAt(i)).getAbsoluteFile();            SVNRevision pegRevision = getCommandLine().getPathPegRevision(i);            try {                logClient.doAnnotate(path, pegRevision, SVNRevision.UNDEFINED, endRevision, this);            } catch (SVNException e) {                if (e.getMessage() != null && e.getMessage().indexOf("binary") >= 0) {                    err.println("Skipping binary file: '" + SVNFormatUtil.formatPath(path) + "'");                } else {                    throw e;                }            }        }    }