如何获取两个修订日期或编号之间的修订历史记录?

时间:2015-01-19 13:01:53

标签: groovy

这是我之前关于通过使用Groovy脚本获取SVN存储库的修订历史记录的问题的重复。我尝试了很多方法,我现在尝试的代码是:

 Calendar cal = Calendar.getInstance();
 cal.set(2015, 01, 14);
 Date date = cal.getTime();

 Calendar cal1 = Calendar.getInstance();
 cal1.set(2014, 10, 12);
 Date date1 = cal1.getTime();

 SVNRevision svr = new SVNRevision(date)
 svr.create(date)
 SVNRevision svr1 = new SVNRevision(date1)
 svr1.create(date1)


 DAVRepositoryFactory.setup();
 String url = "Url"
 String name = "Name";
 String password = "Password";
 SVNRepository repository = null;
 repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url));
 ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(name, password);
  repository.setAuthenticationManager(authManager);
  SVNDirEntry entry = repository.info(".", -1);


 final long EndRevision = repository.getDatedRevision(date)
 final long StartRevision= repository.getDatedRevision(date1)

 println(latestRevision1)
 println(latestRevision2)

 logEntries = repository.log( { "" } as String[] , null ,StartRevision, EndRevision , true , true );


 for ( Iterator entries = logEntries.iterator( ); entries.hasNext( ); ) {
        SVNLogEntry logEntry = ( SVNLogEntry ) entries.next( );
        System.out.println (String.format("revision: %d, date %s", logEntry.getRevision( ), logEntry.getDate()));
 }

但在执行上述代码时,错误显示为:

Caught: org.tmatesoft.svn.core.SVNException: Path not found 404 not found

我无法解决错误,任何人都可以告诉我错误是什么? 并为我提供解决方案。

1 个答案:

答案 0 :(得分:0)

您使用错误的参数/路径调用respository.log。代码{ "" } as String[]有效,但没有返回您期望的内容。你的意图是:

[""] as String[] // a list of strings (one empty string)

使用上面的代码定义一个闭包({}仅用于groovy中的闭包而不用于静态数组(如java中))然后将其转换为字符串列表。结果列表然后不是具有空字符串的列表,而是具有闭包的toString。参见:

def f = {""} as String[]
print f.inspect()
// => ['c$_run_closure1@3b39132f']

这条道路最有可能,你的回购中不存在。