git creators refuse to migrate because they selected sha1 in the start and because of backwards compatibility its harder to just change it. Also git is a situation where its harder to get a maintainer to push your binary blob. In a database, its more probable that a user includes malicious data. The hash used is not so easy to change, unless you are willing to make the change not backwards-compatible (break existing DBs)
You're definitely correct. This project is still in its early stages so no one is really using it yet, so its easy in the sense that I just have to change the hashing algorithm. No need to worry about backwards compatibility.
There actually isn't any database outside of a directory of files. The version control is done the same way that Git works under the hood but written from scratch in C.
Essentially, we have a database directory with two sub-directories, refs and objects. In refs we have a file for the id of each piece of data stored. The id file contains the hash of the latest commit for this id. A commit is just another file that contains a time, a hash of the previous commit, and the hash of the data.
The objects directory stores all the data and the commits, with each entry's filename being the hash of its data and its contents as the data stored.
So all we're doing is making a linked list where each entry points to a different version of that data. No external database or version control needed.