0

我需要从特定文件夹的 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

感谢您的任何建议。

4

1 回答 1

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

+ for(s) 和 if(s) 的结尾

于 2013-08-30T11:23:31.630 回答