Fossil is a distributed version control and ticket tracking system
created by D. Richard Hipp, the primary author of SQLite.
Features:
- tamper-proof artifact record
- simple command-line interface
- customizable web interface with JSON, RSS, and built-in wiki and forum
- online project documentation with full-text search capability
- online activity and ticket reports
- user accounts with access controls
- coherent versioning across all files
- straightforward branching and merging
- bisect searches to pinpoint behavior changes
- SHA3-256 and hardened SHA1 checksums
- FUSE filesystem makes all historical and branch revisions available
- synchronization via http, https, ssh, and local/network filesystems
- automated replication and backup
- git import/export and Subversion/CVS import
- nested checkouts to share common subtrees across related projects
- checkout directory not cluttered with administrative files
- support for Docker
- unversioned file area for builds, statistics, other ephemeral content
- optional PGP signing of commits
- users can subscribe to email alerts to be notified of event types
- private branch which are excluded from syncs until published
- bundles group a change set (e.g. a private branch) into a single file
- users can make their own repositories, no need for special privileges
- works in Windows as well as Linux and other Unix-like systems
Fossil can host the entire project development website, including the
download area, but it also can be used for individual projects with no
need for a shared server.
In addition to typical software development operations, one interesting
application is coordination and auditing of /etc and other configuration
files across a network of computers.
Content is stored in an SQLite database for atomicity, durability, and
effortless administration.
See Fossil in action online:
- https://fossil-scm.org/ - Fossil hosts its own development
- https://sqlite.org/src/ - Fossil originally created to manage SQLite
- https://core.tcl.tk/tcl/timeline?y=ci - Tcl/Tk migrated from CVS
- https://chiselapp.com/ - Free public hosting for Fossil projects
Key technical points:
- unified revision history tree spans the entire repository
- repository is a collection of artifacts identified by their checksums
- artifacts are broadly grouped into content and structural artifacts
- each check-in is tracked as a structural artifact known as a manifest
- manifests primarily list the full names and checksums of each file
- manifests can be amended by subsequent control artifacts
- in most cases, symbolic names refer to the latest matching check-in
- branches are implemented using propagating symbolic tags