1

SVNkit api を使用して、プロジェクトの svn バージョン履歴をダウンロードし、データベースに保存しています。変更されたログ エントリのパスがファイルなのかフォルダーなのかを知りたいです。SVNkit には、それを見つけるために使用できる SVNNodeKind クラスがあります。ただし、私の場合は常に「不明」が返されます。どこかで、svnサーバーがその情報を保存していない可能性があるためかもしれないと読みました。

また、変更されたパスには、ディレクトリの末尾のスラッシュが含まれていません。フォルダかファイルかを確認する他の方法はありますか。

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 サーバーがレポート ノードの種類をサポートしていない場合です。バージョン 1.6.0 以降、 file:プロトコルとsvn:svn+ssh:http(s):に対して常にサポートされているようです。しかし、常に保証されるわけではありません。

于 2013-03-22T20:38:17.020 に答える