Извлечение каталога / файла с помощью SVNKit - PullRequest
8 голосов
/ 03 августа 2010

Я не вижу в вики, где оформление документов задокументировано. В идеале я хотел бы проверить файл "example / folder / file.xml", если не просто папку ... а затем, когда приложение закрывается или иным образом, иметь возможность зафиксировать изменения этого файла. Как мне это сделать?

Ответы [ 3 ]

19 голосов
/ 17 января 2013

Как разработчик SVNKit, я бы порекомендовал вам выбрать новый API на основе SvnOperationFactory.Старый API (основанный на SVNClientManager) будет работать до сих пор, но все новые функции SVN будут доступны только для нового API.

final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
try {
    final SvnCheckout checkout = svnOperationFactory.createCheckout();
    checkout.setSingleTarget(SvnTarget.fromFile(workingCopyDirectory));
    checkout.setSource(SvnTarget.fromURL(url));
    //... other options
    checkout.run();
} finally {
    svnOperationFactory.dispose();
}
8 голосов
/ 03 августа 2010

Вы не можете проверить файл в Subversion. Вы должны проверить папку.

Чтобы проверить папку с одним или несколькими файлами:

SVNClientManager ourClientManager = SVNClientManager.newInstance(null, 
            repository.getAuthenticationManager());
SVNUpdateClient updateClient = ourClientManager.getUpdateClient();
updateClient.setIgnoreExternals(false);
updateClient.doCheckout(url, destPath, revision, revision,
            isRecursive);

Чтобы зафиксировать ранее извлеченную папку:

SVNClientManager ourClientManager = SVNClientManager.newInstance(null, 
            repository.getAuthenticationManager());
ourClientManager.getWCClient().doInfo(wcPath, SVNRevision.HEAD);
ourClientManager.getCommitClient().doCommit
        (new File[] { wcPath }, keepLocks, commitMessage, false, true);
0 голосов
/ 15 июля 2017

Я также использовал фрагмент кода, предложенный Дмитрием Павленко, и у меня не было проблем. Но потребовалось почти 30 минут, чтобы оформить или обновить хранилище репозитория объемом 35 МБ. Это не применимо в моем случае использования (просто проверка структуры каталогов как части содержимого / documents / media веб-приложения). Или я сделал несколько ошибок?

final ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(name, password);
final SVNURL svnUrl = SVNURL.create(url.getProtocol(), name, url.getHost(), 443, url.getPath(), true);

SVNRepository svnRepo= SVNRepositoryFactory.create(svnUrl);
svnRepo.setAuthenticationManager(authManager);
svnOperationFactory.setAuthenticationManager(authManager);

SVNDirEntry entry = svnRepo.info(".", -1);
long remoteRevision = entry.getRevision();

if (!workingCopyDirectory.exists()) {
    workingCopyDirectory.mkdirs();
}

final SvnCheckout checkout = svnOperationFactory.createCheckout();
checkout.setSource(SvnTarget.fromURL(svnUrl));
checkout.setSingleTarget(SvnTarget.fromFile(workingCopyDirectory));
remoteRevision = checkout.run();
...