我正在用svnkit和poi为我的公司创建一个文档,看起来一切都很顺利,直到我在文档的“创建日期”部分进行了修改。我有一堆需要显示的属性,到目前为止我可以通过google找到它。我读到,实际上我可以通过执行SVNRepository.log并查看第一个SVNLogEntry.getDate来检索任何文件的创建日期,但我的大多数文档都围绕着最新的修订数据。对于最后的评论,最后修改它的人等等,所以我试图用SVNRepository.getLatestRevision来填充它。因此,如果没有其他可用的文件,我将不得不做一堆fors,查找每个文件的创建日期,并查找它对应的文件。我想问的是:是否有直接指向文件创建日期的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;提前感谢您的帮助。
发布于 2012-05-11 06:51:15
每个文件和目录的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实例。
https://stackoverflow.com/questions/10518282
复制相似问题