2013-03-22 3 views
1

Я использую SVNkit api для загрузки истории версий SVN проекта и сохранения его в базе данных. Я хочу знать, является ли измененный путь записи журнала файлом или папкой. SVNkit имеет класс SVNNodeKind, который можно использовать для его поиска. Однако он всегда возвращает «неизвестный» в моем случае. Где-то я читал, что это может быть потому, что сервер svn может не хранить эту информацию.Определить тип узла SVN

Также измененные пути не содержат завершающих косых черт для каталогов. Есть ли другой способ узнать, есть ли его папка или файл.

ответ

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

Последнее если является для случая когда сервер SVN не поддерживает тип узла отчетности. Это, кажется, что она всегда поддерживается для файла: протокола и СВН:, SVN + SSH:, HTTP (s): начиная с версии 1.6.0. но не всегда гарантируется.

+0

Да Поскольку я изменил пути (SVNLogEntryPath), я использовал SVNLogEntryPath.getKind(), который возвращает SVNNodeKind. Однако значение в SVNNodeKind приходит как «неизвестное». – user1239080

+0

На самом деле я попробовал снова с SVNRepository.checkPath(), и он возвращает правильный вид узла. Спасибо! – user1239080

+0

@ user1239080 Рад, что это помогло, вы можете повысить и/или принять ответ – pmod

Смежные вопросы