1

我正在使用 SVNkit api 下载项目的 svn 版本历史并将其存储在数据库中。我想知道日志条目的更改路径是文件还是文件夹。SVNkit 有 SVNNodeKind 类,可以用来找到它。但是,在我的情况下,它总是返回“未知”。我在某处读到这可能是因为 svn server 可能没有存储该信息。

此外,更改后的路径不包含目录的尾部斜杠。有没有其他方法可以找出它是文件夹还是文件。

4

1 回答 1

2

根据此SVNkit 示例,您可以使用SVNRepository类的方法执行此操作:

abstract  SVNNodeKind checkPath(java.lang.String path, long revision) 
          Returns the kind of an item located at the specified path in a particular revision.

即最新版本:

...
SVNNodeKind nodeKind = repository.checkPath( svnUrlToCheck ,  -1 );
if ( nodeKind == SVNNodeKind.NONE ) {
    System.err.println( "There is no entry at '" + url + "'." );
} else if ( nodeKind == SVNNodeKind.FILE ) {
    System.out.println( "Entry at '" + url + "' is file." );
} else if ( nodeKind == SVNNodeKind.DIR ) {
    System.out.println( "Entry at '" + url + "' is directory." );
} else if ( nodeKind == SVNNodeKind.UNKNOWN ) {
    System.out.println( "Entry at '" + url + "' is unknown!" );
}

最后一个if是针对 SVN 服务器不支持报告节点类型的情况。似乎它始终支持file:协议和svn: , svn+ssh: , http(s):从 1.6.0 版开始。但并不总是保证。

于 2013-03-22T20:38:17.020 回答