从回购特定目录获取SVNKit的日志
问题描述:
我需要从SVNRepository从特定文件夹获取日志。从回购特定目录获取SVNKit的日志
例如 - 我有
SVNURL url = SVNURL.parseURIEncoded("https://subversion.assembla.com/svn/jscrum");
SVNRepository svnRepository = DAVRepositoryFactory.create(url);
,我从库中获取日志:
Collection logEntries = svnRepository.log(new String[] { "" }, null, startRevision, endRevision, true, true);
,它的工作是正确的,但显示了我从整体回购登录。我需要在repo文件夹中进行更改:“/ trunk/js/web/src/main/webapp”。
我已经尝试了一些“招数”,但没有人正在努力:<
SVNURL url = SVNURL.parseURIEncoded("https://subversion.assembla.com/svn/jscrum/trunk/js/web/src/main/webapp");
或
Collection logEntries = svnRepository.log(new String[] { "/trunk/js/web/src/main/webapp" }, null, startRevision, endRevision, true, true);
一种选择是,以检查是否从整体回购返回路径中包含我的目录路径,但它似乎不那么proffesional; p
感谢您的任何建议。
答
好了,解决办法是这样的(下一代搜索的:P):(S)为
for (Iterator entries = logEntries.iterator(); entries.hasNext();) {
SVNLogEntry logEntry = (SVNLogEntry) entries.next();
if (logEntry.getChangedPaths().size() > 0) {
Set<String> changedPathsSet = logEntry.getChangedPaths().keySet();
for (Iterator<String> changedPaths = changedPathsSet.iterator(); changedPaths
.hasNext();) {
SVNLogEntryPath entryPath = (SVNLogEntryPath) logEntry
.getChangedPaths().get(changedPaths.next());
String path = entryPath.getPath();
if (!path.startsWith(updatePath)) {
continue;
}
+端,如果(一个或多个)
IMO,这两种解决方案将工作中你只会得到'SVNLogEntry'对象的特定路径已被改变。但是,'SVNLogEntry.myChangedPaths'将始终包含该修订的所有*更改路径,因此您必须手动过滤它们。 – mstrap