Something went wrong. Try again.
Git-native issue tracker
Something went wrong. Try again.
1.8 kB · 50 lines
OCaml
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051(** Inspect and replace the canonical tracker schema. The replacement is published through the Git authority before its local SQLite projection is rebuilt. *)
type view = { snapshot : Store_git.snapshot; schema : Core.Schema.t; text : string;}
val inspect : repo:Git_eio.Repository.t -> (view, string) result(** Read the active schema, its schema.toml as the blob holds it, and its source commit from one validated tree. *)
val doc : view -> string(** Render the schema's reference tables for [tk schema --doc]. *)
val change_remote : sw:Eio.Switch.t -> fs:Eio.Fs.dir_ty Eio.Path.t -> net:_ Eio.Net.t -> mono:_ Eio.Time.Mono.t -> repo:Git_eio.Repository.t -> remote:Store_remote.t -> actor:Git.User.t -> message:string -> expected:Store_git.snapshot -> schema_text:string -> row:(Core.Row.t -> Core.Row.t) -> (Store_git.snapshot * string list, string) result(** Validate the complete replacement against [expected], fetch and check the authority's exact tip, push one leased commit, then rebuild the typed local projection. The commit holds [schema_text] byte for byte and every row [row] rewrites; the result names those rows. A proposal that refuses rows names each of them, and a changed authority tip refuses rather than rebasing a schema rewrite implicitly. *)
val change_local : sw:Eio.Switch.t -> fs:Eio.Fs.dir_ty Eio.Path.t -> repo:Git_eio.Repository.t -> authority:Git_eio.Repository.t -> actor:Git.User.t -> message:string -> expected:Store_git.snapshot -> schema_text:string -> row:(Core.Row.t -> Core.Row.t) -> (Store_git.snapshot * string list, string) result(** The same operation over a local Git authority, used by fixtures and local installations. *)