Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
This is a meta issue where we look at modules that depend on Mutliversion, and work towards a "Workspace Preview System" use case.
The modules focused on are:
Multiversion
All content entities are revisionableRevision treeRevision parentsDefines local workspace bundleDefines workspace entityProvides UI for managing and switching workspaces.- #2683345: Create a ConflictTracker service Assigned to: tedbow
- #2692033: Move all migration code into entity_storage_migrate module Assigned to: jeqq
- #2683287: Move Replication and ReplicationLog entity types to Replication module Assigned to: timmillwood
- #2683291: Create a boolean field "ok" for the Replication entity Assigned to: timmillwood
- Move RevisionsDiff service from Relaxed
- Move Changes service from Relaxed
- #2710947: Support replication filters Assigned to: josephdpurcell
- #2749177: Propose UI for Replication Filters Assigned to: josephdpurcell
Depends on MultiversionDefines Replicatior serviceProvides internal replicator plugin for between workspaces.- #2678034: Integrate Workbench Moderation with Workspace Assigned to: Crell
- Give warning WBM will deploy content
- Give confirmation WBM deployment is done
- If upstream not set warn WBM deployment won't happen and hasn't happened
- Integrate the Replication module
- #2683299: Always return ReplicationLog entities after a replication Assigned to: timmillwood
- #2683265: Convert pointers to a content entity type Assigned to: Crell
- #2683273: Throw exception in WorkbenchModerationSubscriber when no upstream
- #2683347: Pull before push and check for conflicts
- #2600382: Come up with a simple access/permission system for Workspaces Assigned to: Crell
- #2749167: Support ReplicationTask
Depends on WorkspaceProvides REST API for content replicationProvides CouchDB replicator pluginDefines remote config entity- Integrate the Replication module
Depends on WorkspaceWorks with RelaxedDefines Replication entity UI (needs to be moved from Workspace)- Diff plugin type
There is also a diagram [PDF], which shows what features are related to each module. Some of these features are existing, and others need implementing.
Comment | File | Size | Author |
---|---|---|---|
#12 | Selection_002.png | 152.97 KB | juampynr |
#12 | Selection_003.png | 14.59 KB | juampynr |
#12 | Selection_001.png | 35.35 KB | juampynr |
#4 | Selection_002.png | 23.65 KB | juampynr |
#2 | Workspaces.pdf | 166.04 KB | timmillwood |
Comments
Comment #2
timmillwoodComment #3
juampynr CreditAttribution: juampynr at Lullabot commentedHere is a text version of the PDF. I will now proceed to convert some of these requirements into issues and cross those which are already present. Feel free to adjust this list as you wish as I am working out my way through the code of these modules.
Multiversion
All content entities are revisionableRevision treeDefines local workspace bundleDefines workspace entityProvides UI for managing and switching workspaces.Workspace
Depends on MultiversionDefines Replicatior serviceRelaxed
Provides CouchDB replicator pluginDefines remote config entityDeploy
Comment #4
juampynr CreditAttribution: juampynr at Lullabot commented@timmillwood, I couldn't test Deploy module due to the following issue:
The status report says the following:
Then, when I try to install the missing dependency, I get the following error:
Am I using the right versions of these modules? (Multiversion, Workspace, Relaxed and Deploy) I cloned the 8.x branch of each of them.
Comment #5
timmillwoodWeird, because the package exists https://packagist.org/packages/doctrine/couchdb
Comment #6
juampynr CreditAttribution: juampynr at Lullabot commentedThis worked, thanks for the tip @timmillwood!
Comment #7
juampynr CreditAttribution: juampynr at Lullabot commented@timmillwood, can you provide with steps on how to test the above requirements which are not strike-through? I would need this in order to be able to create issues for them.
Comment #8
timmillwoodRevision parents & Revision conflicts, all this data is stored in key_value under the
entity.index.rev
prefix. Using the services in http://cgit.drupalcode.org/multiversion/tree/src/Entity/Index we can work out what a revision's parent is, and if a revision has two or more children, then the must be a conflict. Currently you can only generate a conflict by doing a replication using the relaxed module.Workspace module "Provides internal replicator plugin for between workspaces", this is currently handled by http://cgit.drupalcode.org/workspace/tree/src/InternalReplicator.php, after installing multiversion and workspace modules and creating some test content, create a second workspace then go to "/admin/replication/add" and deploy from "default" to the new workspace you created. There are some caching issues here, so you may have to "drush cr" after each step. The workbench moderation integration hasn't been implemented yet but the plan is for when a workspace is marked as approved it automatically replicates.
Relaxed, I think we should change this so it doesn't have to depend on Workspace, but only Multiversion, because it can be used for decoupled sites, and Workspace isn't needed for that. The API follows replication.io protocol as outlined in http://docs.couchdb.org/en/1.6.1/api/index.html. All of the Rest resource plugins we've implemented for this are in http://cgit.drupalcode.org/relaxed/tree/src/Plugin/rest/resource
Deploy module needs a pretty intensive rework, as currently provides a UI to replicate between two endpoints (an entity defined by Relaxed which we are removing). Eventually this will provide a generic UI for replication which follows the mock ups at https://marvelapp.com/11jd8hd
Comment #9
juampynr CreditAttribution: juampynr at Lullabot commentedThanks Tim, I have moved the list of requirements to the top of the issue and I will adjust it now based on your feedback.
Comment #10
juampynr CreditAttribution: juampynr at Lullabot commentedComment #11
juampynr CreditAttribution: juampynr at Lullabot commentedComment #12
juampynr CreditAttribution: juampynr at Lullabot commentedI tried the following to provoke a conflict using Relaxed:
1. Created the following endpoints:
2. Created a node in Default workspace.
3. Deployed it to External Endpoint (CouchDB).
4. Deployed External Endpoint to New Workspace, thus receiving the node.
5. Changed to New Workspace and edited the node.
6. Deployed New Workspace to External Endpoint.
7. Changed to Default Workspace and edited the node.
8. Deployed External Endpoint to Default.
Expected: a conflict, since the node was changed in Default and New Workspace.
Actual: got the message “Successful deployment”. Then when I opened /content, the node is gone.
I tried the following:
1. Opened admin/replication/add.
2. Created a replication:
3. Clicked on Deploy.
Expected: I don’t know. I guess that content should be replicated form Default to New Workspace.
Actual: I got this error:
Relaxed currently does not depend on Workspace, so I am striking through that requirement at the issue description.
Can we get a list of what needs to happen, this could then be split into separate issues.
Comment #13
juampynr CreditAttribution: juampynr at Lullabot commentedComment #14
timmillwoodWe don't currently flag or resolve conflicts, it is quite happy to just replicate and keep conflicting revisions. So the deployment was successful, but it now has a conflict and will just use one of the two conflicting revisions. If you install multiversion_ui module you should see this in the revsion tab of the node.
Workspace is pretty unstable at the moment, but I thought I had resolved that issue. Make sure you are running the latest dev of multiversion and workspace.
Comment #15
timmillwoodComment #16
timmillwoodComment #17
timmillwoodComment #18
dixon_Comment #19
timmillwoodComment #20
dixon_Comment #21
dixon_Comment #22
dixon_Comment #23
dixon_Comment #24
dixon_Comment #25
dixon_Comment #26
timmillwoodComment #27
dixon_Comment #28
dixon_Comment #29
josephdpurcell CreditAttribution: josephdpurcell at Digital Bridge Solutions for Acquia commentedComment #30
josephdpurcell CreditAttribution: josephdpurcell at Digital Bridge Solutions for Acquia commentedComment #31
balsama