String path = getCommandLine().getPathCount() < 2 ? null : getCommandLine().getPathAt(2);
String path = getCommandLine().getPathCount() < 2 ? null : SVNPathUtil.canonicalizeAbsPath(getCommandLine().getPathAt(2));
    public void run(PrintStream out, PrintStream err) throws SVNException {        if (!getCommandLine().hasPaths()) {            SVNCommand.println(err, "jsvnlook: Repository argument required");            System.exit(1);        }        boolean isRevProp = getCommandLine().hasArgument(SVNArgument.REV_PROP);        boolean isVerbose = getCommandLine().hasArgument(SVNArgument.VERBOSE);        File reposRoot = new File(getCommandLine().getPathAt(0));          SVNRevision revision = SVNRevision.HEAD;        SVNLookClient lookClient = getClientManager().getLookClient();                if (getCommandLine().hasArgument(SVNArgument.TRANSACTION)) {            String transactionName = (String) getCommandLine().getArgumentValue(SVNArgument.TRANSACTION);            Map props = null;            if (isRevProp) {                props = lookClient.doGetRevisionProperties(reposRoot, transactionName);            } else {                String path = getCommandLine().getPathCount() < 2 ? null : getCommandLine().getPathAt(2);                props = lookClient.doGetProperties(reposRoot, path, transactionName);            }            printProps(out, props, isVerbose);            return;        } else if (getCommandLine().hasArgument(SVNArgument.REVISION)) {            revision = SVNRevision.parse((String) getCommandLine().getArgumentValue(SVNArgument.REVISION));        }         Map props = null;        if (isRevProp) {            props = lookClient.doGetRevisionProperties(reposRoot, revision);        } else {            String path = getCommandLine().getPathCount() < 2 ? null : getCommandLine().getPathAt(2);            props = lookClient.doGetProperties(reposRoot, path, revision);        }        printProps(out, props, isVerbose);    }