确定SVN节点类型

时间:2013-03-22 18:34:19

标签: svn svnkit

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

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

1 个答案:

答案 0 :(得分:2)

根据此SVNkit example,您可以使用 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起。但并不总是保证。