This repository has been archived by the owner on Feb 8, 2023. It is now read-only.
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.
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 Node
type Identity struct {
Key SigningKey // link to a signing key
Data struct {
Name string // the "name" of the identity
}
}
type Authorship struct {
Author Identity
Data struct {
Date string // ISO timestamp in UTC?
}
}
type Signature struct {
Object Any // link to the signed object
Key SigningKey // link to the signing key
Data struct {
Signature []byte // the signature bytes
}
}
// generic type that terminates in a certain other leaf type
type Tree<LEAF_TYPE> struct {
NAME Link<Tree | LEAF_TYPE>
...
}
the versioning data types
type Commit struct {
Parents []Commit // "parent0" ... "parentN"
Author Authorship // link to an Authorship
Committer Authorship // link to an Authorship
Object Any // what we version ("tree" in git)
Data struct {
Comment String // describes the commit
}
}
type VersionRepository struct {
Refs Tree<Commit> // hierarchy of {branches, tags, heads, remotes, ... }
Logs Tree<File> // reflogs, etc... (maybe should be other than files...)
}