1

我正在使用 svnkit 和 poi 为我的公司创建一个文档,这一切似乎进展顺利,直到我踩到文档的“创建日期”部分。我有一堆需要展示的属性,到目前为止我可以通过谷歌找到它。我已经读过,我实际上可以通过执行 SVNRepository.log 并查看第一个 SVNLogEntry.getDate 来检索任何文件的创建日期,但是我的大多数文档都围绕着最新的修订数据。Beeing 最后的评论,最后修改它的人等等,所以我试图用 SVNRepository.getLatestRevision 来填充它。所以如果没有其他可用的,我将不得不做一堆寻找每个文件的创建日期并寻找它对应的文件。我要问的是:

一些示例代码来显示我在做什么:

ArrayList<SVNFileRevision> resultReturn new ArrayList<SVNFileRevision>();
ArrayList entries = new ArrayList<SVNDirEntry>();
repository.getDir(path, repository.getLatestRevision(), true, entries);

Iterator iterator = entries.iterator();
while (iterator.hasNext()) {
SVNDirEntry entry = (SVNDirEntry) iterator.next();
if (entry.getKind() != SVNNodeKind.DIR) {


    ArrayList<SVNFileRevision> aux = new ArrayList<SVNFileRevision>();
    repository.getFileRevisions(path + (path.equals("") ? "" : "/") + entry.getName(), temp, 1,
                                repository.getLatestRevision());

    for (SVNFileRevision rev : aux) {

  //So we know that rev contains date author and log        
  //System.out.println(rev.getRevision());
  //System.out.println(rev.getRevisionProperties().getSVNPropertyValue("svn:date"));
  //System.out.println(rev.getRevisionProperties().getSVNPropertyValue("svn:author"));
  //System.out.println(rev.getRevisionProperties().getSVNPropertyValue("svn:log"));

            //we add path and name
            rev.getRevisionProperties().put("path", path);
            rev.getRevisionProperties().put("name", entry.getName());

    //insert creation date
    // ? ? ?

            resultReturn.add(rev);

    }
}
}
return resultReturn;

提前感谢您的帮助。

4

1 回答 1

4

每个文件和目录的 SVNProperty.COMMITTED_DATE 指向创建日期。

您还可以查看 SVNProperty.COMMITTED_REVISION 和 SVNProperty.LAST_AUTHOR (如果您有一天需要作者和修订文件/目录的最新更改)。所有这些属性都由 SVN 在每个版本 > 0 时自动为每个文件和目录设置。

SVNProperties properties = new SVNProperties();
svnRepostory.getFile("path/to/file", -1, properties, null);
final String committedDateString = properties.getStringValue(SVNProperty.COMMITTED_DATE);
SVNDate date = SVNDate.parseDate(committedDateString);

或者(甚至更好)你可以使用 SVNRepository#info 调用。它返回具有 getDate() 方法的 SVNDirEntry 实例。

于 2012-05-10T22:51:14.990 回答