2

現在のブランチまたはトランクを取得するためにURLを解析しようとしています。

public SVNConnector(String s_Url, String login, String password, String project) {
        try {
            url = SVNURL.parseURIEncoded(s_Url);
            ISVNAuthenticationManager authManager = new BasicAuthenticationManager(login, password);
            DAVRepositoryFactory.setup();
            repository = SVNRepositoryFactory.create(url, null);
            repository.setAuthenticationManager(authManager);
            this.projectName = project;
            latestRevision = repository.getLatestRevision();
        } catch (SVNException svne) {
            logger.error("Impossible to connect to SVN repository. s_Url: "+s_Url+" login:"+login+" password: "+password, svne);
        }
    }

私のURLはorのようなものhttp://10.61.128.222/svn/i18ntest/trunkで、このURLを入力してorhttp://10.61.128.222/svn/PFT/branches/protoi18nを返すメソッドが必要なので、次のように実行できます。/trunk//branches/protoi18n/

public List<OutputElement> retrieveI18nFiles() throws SVNException {
        List<OutputElement> outs = new ArrayList<OutputElement>();
        String path = url.getPath()+"/core/src/main/resources/fr/gefco/"+projectName+"/i18n/"; // this is not working!

        latestRevision = repository.getLatestRevision();

        // For some reason, type safety is not insured in SVNKit, even if generics are around for some years, now
        Collection<SVNDirEntry> entries = repository.getDir(path, latestRevision, (SVNProperties)null, (Collection<SVNDirEntry>)null);
        for (SVNDirEntry entry : entries) {
            OutputElement out = new OutputElement();
            out.setEntry(entry);
            out.setOut(retrieveOutputStream(entry,path));
            outs.add(out);
        }
        return outs;

    }

url.getPath()が戻ってき/svn/i18ntest/trunk/ましたが、これは私が必要としているものではありません。もちろん、必要なビットを取得するために解析することもできますが、SVNKitがそれを行うためのすでに証明された方法を提供するかどうかを最初に知りたいと思います。

4

1 に答える 1

4

作業するときSVNRepositoryは、リポジトリルートに相対的なパスが必要です。を使用してリポジトリルートURLを取得してSVNURL root = repository.getRepositoryRoot(true)から、を使用SVNURLUtil.getRelativeURL(root, url, false)してとリポジトリルートURLの間の相対パスを取得できurlます。

于 2012-05-31T11:33:38.673 に答える