从回购特定目录获取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

感谢您的任何建议。

+1

IMO,这两种解决方案将工作中你只会得到'SVNLogEntry'对象的特定路径已被改变。但是,'SVNLogEntry.myChangedPaths'将始终包含该修订的所有*更改路径,因此您必须手动过滤它们。 – mstrap

好了,解决办法是这样的(下一代搜索的: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; 
         } 

+端,如果(一个或多个)