修剪或限制 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);
    }
}