Skip to content
go-libfossil Tags and Properties
Login

Tags and Properties

Tags and Properties for Check-in e241048f77

Context
2026-10-03
17:48 • Edit [e241048f77]: Add tag "v0.10.0" with note "Release v0.10.0

## Highlights

- Checkouts created by the fossil binary (`fossil open`) now work through go-libfossil. `Status` no longer fails on them, and change detection follows fossil's own rules. - Checkout operations now match fossil's behavior: `Status` reports missing files, `Extract` checks for unsaved work before changing anything, and checking out a partly synced version is refused up front. - `Revert` restores missing files, drops pending merges and undoes renames. Reading a stored artifact no longer returns compressed bytes on any Go version. - The CLI's `add`, `rm`, `rename` and `revert` commands now call the library instead of editing the checkout database directly.

## Breaking changes

- `Checkout.Revert` keeps a never-committed file on disk when it reverts the add. It used to delete the file. - `Checkout.Rename` refuses to move a file onto one that already exists on disk. It used to overwrite it. - `Revert` refuses, changing nothing, when undoing a rename would overwrite another file (#248). - A tracked file missing from disk no longer blocks `Extract` from switching versions, and `Status` reports it as `missing`.

## Upgrade notes

- Reverting a pending add no longer deletes the file. Delete it yourself if that's what you relied on. - Checking out a version whose content is partly missing now returns an error naming the missing files. It used to fail later, or panic. - The CLI's `rename` moves the file on disk, and `revert` restores committed content.

## Changes 554084e chore(release): v0.10.0 changelog (#250) d4da783 fix(checkout): revert undoes a pending rename (#242) (#249) 307250c fix(content): report database faults from the availability check (#239) (#247) 4770fc8 fix(checkout): dry runs change nothing; switching ends a merge (#236) (#246) c863090 fix(cli): add, rm, rename and revert call the library (#234) (#245) d5fddcb refactor(vfile): give the checkout's vfile encoding one owner (#233) (#243) aa37186 fix(checkout): classify changes in one place; report missing files (#232) (#241) 068a1b5 fix(checkout): refuse to load a version with missing content (#231) (#240) d47a204 fix(blob): always inflate blob.content on load (#235) (#238) 86743db fix(checkout): check Extract's safety before replacing vfile (#230) (#237) 33695e7 fix(checkout): read checkouts made by the fossil binary (#228) (#229)". artifact: 5a889a80f5 user: [email protected]

17:47
chore(release): v0.10.0 changelog (#250) check-in: e241048f77 user: [email protected] tags: trunk, v0.10.0
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