The other problem is that I sorta want transactional-database features on top of these things. Git does this well. I also want fast indexing on parts. Git does not do this well. I am considering writing a "standard" for the dumping of sqlite to git, so that I can just delegate this out; Any transaction can be expressed as a git commit, and I can run both at once for both the durability and the reasonable indexing; The sqlite database can be re-created and reindexed whenever, and it also sorta works for backups...
Definitely just spinning my wheels, though. We'll see where databases take us next.
I think you're referring to SCDs, and there are plenty of well-defined ways to track these within relational databases:
https://en.wikipedia.org/wiki/Slowly_changing_dimension
Why git?
I've been working on a tool that treats the git repo as the SSOT then lets you dump out all kinds of formats for data work including a sqlite DB. I haven't had as much time as I would like on it but it's at https://pypi.org/project/DataTig/
Somewhat git-compatible, based on sqlite3.
I have a cron script stashing whatever is currently in an obsidian vault into a fossil repo. There's a fossil addremove command that makes that very easy. Thus distributed backups of said vault.
I would say git core concepts are pretty similar to fossil concepts, but actual plumbing implementation details are pretty distinct.
The major difference that I remember from a day-to-day "git porcelain" perspective is that rebases and other types of history rewriting are very discouraged.
For a Rosetta stone of somewhat comparable commands: https://fossil-scm.org/home/doc/trunk/www/gitusers.md
> Can it sometimes use existing git repos
You can, but it's kinda a lot of really slow busywork. And you lose some of the not-file-dvcs features of Fossil, but it is possible.
This page explains how: https://www.fossil-scm.org/home/doc/trunk/www/mirrortogithub...
https://docs.dolthub.com/sql-reference/version-control/dolt-...
You can have your cron do something like this:
The || exit 0 should ensure no errors even if there is nothing to commitNow you have a commit history of every change made to that source of information - just run "git log" to view it.
I run this kind of thing on scheduled GitHub Actions all the time, see https://simonwillison.net/2020/Oct/9/git-scraping/