修剪或限制 Apache Jackrabbit JCR 的最大版本历史记录
Trimming down or capping max version history for Apache Jackrabbit JCR
在使用 Apache Jackrabbit 作为 JCR 后端的应用程序中,存储库中有一些可版本化的节点(主要是文本内容)。这些节点的版本历史似乎在增长 "in perpetuity".
在版本历史记录(每个工作区)中配置最大版本数的best/correct方法是什么 - 对于未来的历史记录条目和 "trim down" 现有版本历史记录的任意最大值每个历史记录的条目数?
我们只是设置了一个 属性,对我们想要保留的版本数量的限制,然后删除多余的。
这是一个未经测试的想法,你可以如何做到...
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);
}
}
在使用 Apache Jackrabbit 作为 JCR 后端的应用程序中,存储库中有一些可版本化的节点(主要是文本内容)。这些节点的版本历史似乎在增长 "in perpetuity".
在版本历史记录(每个工作区)中配置最大版本数的best/correct方法是什么 - 对于未来的历史记录条目和 "trim down" 现有版本历史记录的任意最大值每个历史记录的条目数?
我们只是设置了一个 属性,对我们想要保留的版本数量的限制,然后删除多余的。
这是一个未经测试的想法,你可以如何做到...
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);
}
}