在使用Apache Jackrabbit作为JCR后端的应用程序中,存储库中有一些可版本化的节点(主要是文本内容)。似乎这些节点的版本历史只会永久地增长,并且会永久地增长#34;。
在版本历史记录中配置最大版本数量的最佳/正确方法是什么(每个工作区?) - 对于将来的历史记录条目和"减少"每个历史记录中任意最大条目数的现有版本历史记录?
答案 0 :(得分:2)
我们只设置一个属性,对我们要保留的版本数量进行限制,然后删除多余的。
这是一个未经测试的想法,你怎么做...
public void deleteOldVersions(Session session, String absPath, int limit)
throws RepositoryException {
VersionManager versionManager = session.getWorkspace().getVersionManager();
VersionHistory versionHistory = versionManager.getVersionHistory(absPath);
VersionIterator versionIterator = versionHistory.getAllLinearVersions(); // Gets the history in order
long numberToDelete = versionIterator.getSize() - limit;
while (numberToDelete-- > 0) {
String versionName = versionIterator.nextVersion().getName();
versionHistory.removeVersion(versionName);
}
}