Fossil is a distributed SCM by the developer of sqlite
that includes a distributed bug-tracking system and a distributed Wiki, all packed into a very small and efficient executable, using sqlite
as storage.
Before Dropbox and SyncThing came along, I used Fossil to sync my work between machines:
# init a new repo and open it
fossil init ~/Sync/Archive/tld.of.project.fossil
fossil open !$
# Add the fossil checkout file to .gitignore
echo ".fslckout" >> .gitignore
# Store this repo's git config (i.e., remote repos) in fossil as well
fossil add .git/config .gitignore
The great thing about Fossil is that its single file store is very quick to sync. Being a single file is no problem for any sync solution that can do proper rolling checksums (like rsync
), and there are no loose ends.
The downside is that Fossil can be somewhat arcane (and has an absolutely horrid built-in web UI). But for snapshotting repositories and moving them around it handily beats git
bundles, which are read-only and fiddly to use.