HomeSoftware Heritage

Add snapshot models

Description

Add snapshot models

Summary:
Snapshots are the new, improved occurrences; They're the topmost object in the
Software Heritage Merkle Tree, and represent a full picture of an origin at a
given time.

Snapshots contain a list of named pointers to objects in the Software Heritage
archive, as well as an intrinsic identifier. The full specification is
supported: pointers to all types of objects, dangling pointers, as well as alias
branches.

They're implemented with a somewhat classic fully normalised model; Foreign keys
use a sha1_git, which makes more sense regarding pointing at non-existent
objects, at the expense of some economies of size.

Backwards compatibility both ways with occurrences is ensured: when adding a
snapshot linked to an origin visit, the corresponding occurrences are created in
occurrence_history; when querying the snapshot for an origin visit where we
haven't generated the snapshot yet, a virtual snapshot with id None is returned.
This lets us migrate to the new tables gently.

Close T567.

Test Plan: Integration tests are included.

Reviewers: zack, Reviewers!

Maniphest Tasks: T567

Differential Revision: https://forge.softwareheritage.org/D268

Details

Provenance
olasdAuthored on Nov 9 2017, 6:11 PM
olasdPushed on Dec 15 2017, 3:37 PM
Differential Revision
D268: Add snapshot models
Parents
rDSTO0bfd709df9ff: sql/upgrades: add 113 -> 114
Branches
Unknown
Tags
Unknown
Tasks
T567: adapt SQL storage for repository snapshot objects