从repo的特定目录获取SVNKit的日志

时间:2013-08-30 09:22:09

标签: java logging directory repository svnkit

我需要从特定文件夹中获取SVNRepository的日志。

例如 - 我有

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);

一个选项是检查整个仓库的返回路径是否包含我的目录路径,但似乎不那么专业; P

感谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

好的,所以解决方案看起来像这样(对于下一代搜索者:P):

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;
                        }

+(s)和if(s)

的结尾