This repository was archived by the owner on Feb 8, 2023. It is now read-only.
This repository was archived by the owner on Feb 8, 2023. It is now read-only.
Versioning: Commit + Repo Datastructures #23
Open
Description
Versioning has been a long time coming.
We need to construct the necessary data types before we start making any tooling around it. The types
The SYNTAX of the "merkldag DSL" is still TBD (#22), but for now using go-like
first, some types we need
// Any is any merkledag NodetypeIdentitystruct { KeySigningKey// link to a signing keyDatastruct { Namestring// the "name" of the identity } } typeAuthorshipstruct { AuthorIdentityDatastruct { Datestring// ISO timestamp in UTC? } } typeSignaturestruct { ObjectAny// link to the signed objectKeySigningKey// link to the signing keyDatastruct { Signature []byte// the signature bytes } } // generic type that terminates in a certain other leaf typetypeTree<LEAF_TYPE>struct { NAMELink<Tree|LEAF_TYPE>... }
the versioning data types
typeCommitstruct { Parents []Commit// "parent0" ... "parentN"AuthorAuthorship// link to an AuthorshipCommitterAuthorship// link to an AuthorshipObjectAny// what we version ("tree" in git)Datastruct { CommentString// describes the commit } } typeVersionRepositorystruct { RefsTree<Commit>// hierarchy of {branches, tags, heads, remotes, ... }LogsTree<File>// reflogs, etc... (maybe should be other than files...) }