2013-03-22 74 views
1

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

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

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!"); 
} 

最后如果是的情况下

回答

2

根据这一SVNkit example你可以SVNRepository类的方法做到这一点当SVN服务器不支持报告节点种类时。这似乎是它一直支持文件:协议和SVN:SVN + SSH:HTTP(S):自1.6.0版本。但并不总是有保证。

+0

是因为我改变了路径(SVNLogEntryPath)我使用了SVNLogEntryPath.getKind(),它返回SVNNodeKind。但是SVNNodeKind中的值是“未知”。 – user1239080 2013-03-22 20:59:37

+0

其实我用SVNRepository.checkPath()再试一次,它确实返回正确的节点种类。谢谢! – user1239080 2013-03-22 21:11:12

+0

@ user1239080很高兴它有所帮助,你可以upvote和/或接受答案 – pmod 2013-03-22 22:37:45