【问题标题】:Getting creation date with svnkit使用 svnkit 获取创建日期
【发布时间】:2012-05-09 14:36:14
【问题描述】:

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

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

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;

提前感谢您的帮助。

【问题讨论】:

    标签: svn svnkit


    【解决方案1】:

    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 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      相关资源
      最近更新 更多