Use Case:
1) You have to delete specific version from repository
2) You have to create versions using API
3) You have to remove versions
4) Reduce size of repository by removing versions
Background:
CQ uses JCR version management to maintain versions
http://jackrabbit.apache.org/jackrabbit-architecture.html
http://www.day.com/maven/jsr170/javadocs/jcr-2.0/javax/jcr/version/package-summary.html
VersionManger http://www.day.com/maven/jsr170/javadocs/jcr-2.0/javax/jcr/version/VersionManager.html is main service to handle most of task related to versioning.
Within CQ in file systems versions are persisted under /crx-quickstart/repository/version and version index under /crx-quickstart/repository/repository/index
Corresponding configuration is under /crx-quickstart/repository/repository.xml (Which is global configuration)
<Versioning rootPath="${rep.home}/version">
<......>
</Versioning>
Within repository versions are stored under /jcr:system/jcr:versionStorage node, Which is one per repository.
How Versions are created in CQ:
Following actions are responsible for creating version
1) Activation of page (This is controlled by version manager configuration)
http://dev.day.com/docs/en/cq/current/deploying/configuring_cq.html#OSGi%20Configuration%20in%20the%20Repository
Note that from CQ5.5 this configuration is not available by default. You have to create a osgi:Config within repository for this (com.day.cq.wcm.core.impl.VersionManagerImpl).
You can control number of version created by activation by setting versionmanager.maxNumberVersions property.
2) By sidekick
3) Using API http://www.day.com/specs/jcr/2.0/15_Versioning.html and example http://wiki.apache.org/jackrabbit/ExamplesPage#Versioning_Basics
How to find specific version in CQ
1) Using repository
2) using API
Something like
VersionManager mgr = session.getWorkspace().getVersionManager();
VersionHistory vh = (VersionHistory) node.getParent().getParent();
VersionIterator vit = vh.getAllVersions();
while (vit.hasNext()) {
Version v = vit.nextVersion();
}
How to Purge Version in CQ
1) Using configuration
http://dev.day.com/docs/en/cq/current/deploying/configuring_cq.html#Configuring%20Version%20Purge
2) Using version Purge Tool
From CQ5.5 onward version purge tool is integrated in CQ that you can use to purge versions
for that go to tools -> versioning -> PurgeVersion
Purging version will help you to reduce size of repository a lot. You can also configure your repository for not to create versions for other environments (Like dev or staging)
1) You have to delete specific version from repository
2) You have to create versions using API
3) You have to remove versions
4) Reduce size of repository by removing versions
Background:
CQ uses JCR version management to maintain versions
http://jackrabbit.apache.org/jackrabbit-architecture.html
http://www.day.com/maven/jsr170/javadocs/jcr-2.0/javax/jcr/version/package-summary.html
VersionManger http://www.day.com/maven/jsr170/javadocs/jcr-2.0/javax/jcr/version/VersionManager.html is main service to handle most of task related to versioning.
Within CQ in file systems versions are persisted under /crx-quickstart/repository/version and version index under /crx-quickstart/repository/repository/index
Corresponding configuration is under /crx-quickstart/repository/repository.xml (Which is global configuration)
<Versioning rootPath="${rep.home}/version">
<......>
</Versioning>
Within repository versions are stored under /jcr:system/jcr:versionStorage node, Which is one per repository.
How Versions are created in CQ:
Following actions are responsible for creating version
1) Activation of page (This is controlled by version manager configuration)
http://dev.day.com/docs/en/cq/current/deploying/configuring_cq.html#OSGi%20Configuration%20in%20the%20Repository
Note that from CQ5.5 this configuration is not available by default. You have to create a osgi:Config within repository for this (com.day.cq.wcm.core.impl.VersionManagerImpl).
You can control number of version created by activation by setting versionmanager.maxNumberVersions property.
2) By sidekick
How to find specific version in CQ
1) Using repository
- Note that not for all node versions are created. Node has to be of mixin type mix:versionable (node.addMixin("mix:versionable")
- Once you are sure that node is of correct mixin type, Find that node using CRX explorer or CRXDE light.
- Once node is found find UUID of that node
- Based on UUID you can find out location of version within repository. Within repository versions are stored like this/jcr:system/jcr:versionStorage/<FIRST TWO LETTER OF UUID>/<NEXT TWO LETTER>/<NEXT TWO LETTER>/<UUID>/<VERSION NUMBER> For example for UUID ce472450-f567-459e-8adc-6fd7a3d8a4f3 you can find it's version under /jcr:system/jcr:versionStorage/ce/47/24/ce472450-f567-459e-8adc-6fd7a3d8a4f3/<Version Number>
2) using API
Something like
VersionManager mgr = session.getWorkspace().getVersionManager();
VersionHistory vh = (VersionHistory) node.getParent().getParent();
VersionIterator vit = vh.getAllVersions();
while (vit.hasNext()) {
Version v = vit.nextVersion();
}
How to Purge Version in CQ
1) Using configuration
http://dev.day.com/docs/en/cq/current/deploying/configuring_cq.html#Configuring%20Version%20Purge
2) Using version Purge Tool
From CQ5.5 onward version purge tool is integrated in CQ that you can use to purge versions
for that go to tools -> versioning -> PurgeVersion
Purging version will help you to reduce size of repository a lot. You can also configure your repository for not to create versions for other environments (Like dev or staging)