java - 如何用SVNkit识别SVN路径是目录还是文件?

标签 java svn svnkit

假设你有一个指定的 SVN 路径,如下所示,我怎么知道这个项目是 svn 目录还是 svn 文件。谢谢。

http://cvs-server.test.com:8001/svn/test

已更新

            SVNURL svnUrl = SVNURL.parseURIEncoded(url);
            SVNRepository repos = SVNRepositoryFactory.create(svnUrl);
            ISVNAuthenticationManager authManager = 
            SVNWCUtil.createDefaultAuthenticationManager("user1","123");

            repos.setAuthenticationManager(authManager);

            SVNNodeKind nodeKind = repos.checkPath(url, repos.getLatestRevision());

为什么即使 url 是一个文件,我也没有得到 none ?我确信这个 url 存在于 SVN 中。 ORZ... SVNkit 有很多错误。

最佳答案

如果您遇到错误,请报告给http://issues.tmatesoft.com/issues/SVNKIT .

checkPath 不适用于 URL,它适用于绝对路径(即相对于存储库根目录)或相对路径(相对于 SVNRepository 实例所在的 URL)构造)---有关更多详细信息,请参阅其 javadoc

所以你可以使用这个代码

SVNNodeKind nodeKind = repos.checkPath("", repos.getLatestRevision());

甚至

SVNNodeKind nodeKind = repos.checkPath("", -1);

第二个变体会更快,因为它不执行 getLatestRevision 请求,并且这是一种相当流行的检查 URL 存在的方法,在 SVNKit 本身中经常使用。

或者,您可以使用绝对路径(应以“/”开头),但要指定的路径取决于您的存储库根目录。您可以通过运行获取存储库根目录

$ svn info "http://cvs-server.test.com:8001/svn/test"

或者通过运行

repos.getRepositoryRoot(true);

来自 SVNKit 代码。绝对路径应以“/”开头,并且相对于获取的存储库根目录。

关于java - 如何用SVNkit识别SVN路径是目录还是文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13417223/

相关文章:

Java 线程无法正确运行

java - 如何从 ActivityGroup 调用 ActivityGroup 的子 Activity 中的非静态方法?

java - 值引擎不是对象 android.speech.tts.TextToSpeech 的成员

svn - 在 TortoiseSVN 中获取锁定

java - 在Java中获取特定日期范围的SVN日志

Java表arraylist修改

svn - 使用 LDAP 进行 SVN 用户认证

sql-server - PostgreSQL 的迁移

java - 使用 svnkit 获取文件的先前修改版本

java - svnkit:如何枚举根目录中的svn存储库?