2013-03-22 77 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