Oak 中的版本控制和版本控制管理是如何工作的?

How does versioning and version control management work in Oak?

我们可以说 OAK 1.4 提供了开箱即用的版本控制和版本控制管理功能吗?如果是这样,如何?这是否也意味着相同的功能可供 AEM 作者使用,即暴露于顶层?

Jackrabbit 一直以版本管理为核心。在 OAK 实现中,它打包在 org.apache.jackrabbit.oak.jcr.version 下。

有关 JackRabbit 版本控制功能方面的详细信息(它也适用于 OAK)可在 Wiki here

中找到

核心概念围绕混合类型 mix:versionable,在 OAK 中,任何具有混合类型 mix:versionable 的节点都可以进行版本控制以维护更改历史记录。实现的关键方面是 VersionManager class 为版本关系操作提供 API。

在 AEM 中,JCR 版本控制的核心概念得到扩展,并以更受限制的方式提供。 AEM 仅允许 页面 的版本控制,这是通过在包 com.day.cq.wcm.core.impl.VersionManagerImpl 中提供自己的 VersionManager 实现来限制的,请参阅文档 here

默认情况下,在 AEM 中,页面的版本是在页面激活时创建的。 AEM 在经典 UI 中提供 GUI 接口以在页面上显式创建版本,并且有一个 OOTB 流程步骤可用于版本控制,可按原样在自定义工作流实施中使用。