//! zit — a Fossil version-control system implemented in Zig.
//!
//! zit is a direct port of the Fossil formats and protocol as specified by
//! four companion Internet-Drafts, kept in `docs/rfcs/`:
//!
//! * delta — draft-fossil-delta-format-00 (byte-level delta encoding)
//! * artifact— draft-fossil-artifact-format-00 (manifest/control-artifact cards)
//! * reposta.— draft-fossil-repo-state-00 (derived branch/tag/leaf/trunk views)
//! * sync — draft-fossil-sync-protocol-00 (HTTP sync/clone protocol)
//!
//! Implementation order follows the RFC dependency layering:
//! delta -> artifact -> repostate -> sync
//!
//! Each module cites the section of its RFC that governs a given rule.
const std = @import("std");
/// The §4.1 zlib container codec — a leaf below delta/artifact/repostate/sync,
/// the single home for the container framing those layers store and transmit.
pub const container = @import("container.zig");
pub const delta = @import("delta.zig");
pub const artifact = @import("artifact.zig");
pub const repostate = @import("repostate.zig");
pub const sync = @import("sync.zig");
pub const managed = @import("managed.zig");
/// The persistence layers, folded into the one embeddable `zit` module so a
/// library consumer wires a single dependency instead of five peers: the
/// content-addressed on-disk file (`storage`), the framed append-only log over
/// it (`logstore`), the `.zit-checkout` working-state record (`checkout`), and
/// the working-tree materializer (`update`). Circular file-level imports among
/// these and the per-RFC modules are legal within one module; only cross-module
/// edges may not cycle.
pub const storage = @import("storage.zig");
pub const logstore = @import("logstore.zig");
pub const checkout = @import("checkout.zig");
pub const update = @import("update.zig");
/// The repository facade — the deep module the north star names as the public
/// repo surface: open a repository, resolve a name, read the derived view, list
/// and cat content. `repoview` (the derived-view loader) is re-exported as its
/// public collaborator; `repocache` stays library-internal, reached only
/// through `Repository`.
pub const Repository = @import("repository.zig").Repository;
pub const repoview = @import("repoview.zig");
pub const repo_filename = @import("repository.zig").repo_filename;
/// Suite version of the specifications this implementation targets.
pub const rfc_revision = "00";
test {
// Aggregate every module's tests into the library test binary.
_ = @import("container.zig");
_ = @import("container_test.zig");
_ = @import("delta.zig");
_ = @import("delta_test.zig");
_ = @import("artifact.zig");
_ = @import("artifact_test.zig");
_ = @import("repostate.zig");
_ = @import("repostate_test.zig");
_ = @import("sync.zig");
_ = @import("sync_test.zig");
_ = @import("managed.zig");
// The folded store layers and their sibling public-surface test files.
_ = @import("storage.zig");
_ = @import("logstore.zig");
_ = @import("logstore_test.zig");
_ = @import("checkout.zig");
_ = @import("update.zig");
_ = @import("update_test.zig");
// The repository facade and its derived-view collaborators.
_ = @import("repoview.zig");
_ = @import("repocache.zig");
_ = @import("repository.zig");
_ = @import("repository_test.zig");
}