Skip to content
go-libfossil Tags and Properties
Login

Tags and Properties

Tags and Properties for Check-in 6d5357235a

Context
2026-10-21
21:28 • Edit [6d5357235a]: Add tag "v0.14.0" with note "Release v0.14.0

go-libfossil reads and writes sub-manifest trees (draft-fossil-submanifests-00) and supports sparse cones (draft-fossil-sparse-cone-00), interoperating with zit and fossil 2.28: - Sub-manifest trees: the reader is always on; the writer is opt-in per repository (Repo.EnableSubmanifests, repo submanifests enable). Sync announces tree reading with pragma send-submanifests and refuses tree-bearing artifacts to a peer that did not. - Sparse checkouts: open, update, merge and commit within a cone (repo open --cone, repo cone ...); uncovered files are tracked without being written. - Sparse stores: Repo.SetStoreCone and repo cone store/compact keep only the cone's content, recover what a commit needs from a peer, and serve a cone-scoped clone when partial-mirror allows it. Every in-scope draft is fully covered by the conformance suite.

Behavior changes to check when upgrading: - ExtractOpts and cli.RepoOpenCmd are no longer comparable with ==. Every other exported API change is an addition. - Merge and Update use a port of fossil 2.28's merge3: conflict markers, line numbers and clean merges match fossil byte for byte. - Update follows renames, saves undo state and refuses to merge a symlink; Revert undoes swapped and chained renames. - Tag propagation and leaf repair run in the transaction that linked the check-ins; a failed sync no longer runs a crosslink sweep before it returns. - The first crosslink sweep after upgrading re-examines every blob once, so trees an earlier version could not parse are linked. - repo status, repo verify, repo clone and repo add DIR behave as their fossil counterparts; Repo.Verify sweeps the delta forest once, so verification of a large repository takes seconds, not minutes. - Event rows, rcvfrom and ticket tables match fossil rebuild.

See CHANGELOG.md for the full list.". artifact: f29731314c user: [email protected]

21:27
Merge pull request #460 from danmestas/release/v0.14.0

chore(release): v0.14.0 changelog leaf check-in: 6d5357235a user: [email protected] tags: main, trunk, v0.14.0

21:20
Merge pull request #437 from danmestas/feat/submanifest-reader

feat: sub-manifest trees and sparse cones (draft-fossil-submanifests-00, draft-fossil-sparse-cone-00) check-in: 7244496a09 user: [email protected] tags: main, trunk

2026-04-19
16:30
Initial open source release

libfossil is a pure-Go implementation of the Fossil SCM, reading and writing the same .fossil SQLite repository format as upstream Fossil.

This is the first public release of code that previously lived in a private repository. The module path is github.com/danmestas/libfossil and the binary is named libfossil to avoid $PATH collisions with upstream fossil.

Included: - Repo lifecycle (create, clone), checkout/checkin, timeline, merge, diff, annotate, shun, tag, branch, bisect, stash, undo/redo - Sync-over-HTTP protocol (client and handler) - Two SQLite drivers: modernc (pure Go, default) and ncruces (wasm-capable) - Observer interfaces (SyncObserver, CheckoutObserver) with an optional OpenTelemetry implementation in observer/otel (separate submodule) - Deterministic simulation testing harness with BUGGIFY fault injection - Kong-based embeddable CLI under cli/ and a standalone binary under cmd/libfossil/ check-in: f5744359d3 user: [email protected] tags: trunk