假设你有一个指定的 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/