Удалить запись через Java tmatesoft SVN - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь очистить папку в SVN через ISVNEditor Java. Я считываю все файлы в этой папке, используя:

final List<String> filesInFolder = tool.getAllFilesInDir(map);

public List<String> getAllFilesInDir(final String dir) throws SVNException{
    final String dir2 = dir.substring(prefix.length(), dir.length());
    final SVNNodeKind kind = query.checkPath(dir2, -1);
    final List<String> fileList = new ArrayList<>();
    if (SVNNodeKind.DIR.equals(kind)){
        SVNRevision revision = SVNRevision.HEAD;
        final SvnList list = operationFactory.createList();
        list.setDepth(SVNDepth.IMMEDIATES);
        list.setRevision(revision);
        list.addTarget(SvnTarget.fromURL(SVNURL.parseURIEncoded(baseURL + "/" + dir), revision));
        list.setReceiver(new ISvnObjectReceiver<SVNDirEntry>() {
            public void receive(SvnTarget target, SVNDirEntry object) throws SVNException {
                final String name = object.getRelativePath();
                if(name!=null && !name.isEmpty()) {
                    fileList.add(name);
                }
            }
        });
        list.run();
    }
    return fileList;
}

Затем я перебираю этот массив, чтобы удалить файлы, используя

for (final String s : filesInFolder) {
    tool.removeFromSvn(map + "/" + s, SVNNodeKind.FILE);
}

private void removeFromSvn(final String dir, final SVNNodeKind nodeKind) throws SVNException{
    String dir2 = dir;
    if (dir2.substring(0, prefix.length()).equalsIgnoreCase(prefix)){
        dir2 = dir.substring(prefix.length(), dir.length());
    }
    final SVNNodeKind kind = query.checkPath(dir2, -1);
    if (nodeKind.equals(kind)){
        editor.openRoot(-1);
        editor.deleteEntry(dir2, -1);
    } else {
        throw new GpsSvnException("Cannot open " + dir2);
    }
}

Что аналогично примеру 9 в следующей ссылке: https://www.programcreek.com/java-api-examples/?class=org.tmatesoft.svn.core.io.ISVNEditor&method=deleteEntry

Значение dir2 приводит к: «SPG2 /.../ tc001 / TC001.feature», который является допустимым путем при его открытии в TortoiseSVN. То же самое происходит, когда я не удаляю префикс с переменной dir: «svn / JavaDev / SPG2 /.../ tc001 / TC001.feature». При использовании любого из этих значений я получаю ошибку 404 Not Found. При перемещении по каталогам сначала, а затем при удалении я получаю ошибку 204 Нет содержимого.

У меня вопрос, как мне удалить файл из SVN с помощью ISVNEditor? Какой патч мне нужно вставить в него, и нужно ли открывать другие каталоги, прежде чем пытаться удалить?

...