Ticket #1077 (new enhancement) — at Version 1

Opened 3 years ago

Last modified 23 months ago

Switch to new vdm changeset model

Reported by: rgrp Owned by: kindly
Priority: awaiting triage Milestone: ckan-backlog
Component: ckan Keywords:
Cc: Repository: ckan
Theme: none

Description (last modified by rgrp) (diff)

Have developed a new "changeset" based model for revisioning in vdm. This has several advantages:

  • Much simpler
  • Cleaner separation of continuity from changesets
    • Supports certain operations that are impossible now (e.g. deleting all changes to a particular object irrespective of whether other objects were changed in same revisions).
  • Easier support for pending state and similar behaviour
  • Almost identical API

Implementation

  • The main challenge with this change is schema and data migration

Migration

Every revisioned object has a revision_id and revision attribute.

Approximate algorithm:

Revision -> Changeset

for revtype in [PackageRevision, ...]:
    for pkgrev in package_revision:
        changeset = lookupchangeset(package_revision)
        ChangeObject(cset, (table, id), dictize(pkgrev))

Question:

  • does pkg include tags attributes or not? or we have to dictize, pkgrev, pkg2tagrev, and tag. Probably the latter.

Change History

comment:1 Changed 3 years ago by rgrp

  • Priority changed from awaiting triage to critical
  • Description modified (diff)
Note: See TracTickets for help on using tickets.