You wouldn't necessarily need to track every change, you could just have 2 tables, one which contains the last "saved" version of the document, and one which contains the last modified version of the document. Upon opening after a crash, if there is a more recent modified version, the program will ask if you want to load that version.
Re:What If OpenDocument Used SQLite?
by mixmastamyk on Monday September 18, 2023 @04:50PM
(#37561857)
Databases handle all this natively with transactions and WALs. i.e. Don't need to build a Flintstones version yourself.
Also binary documents are a lousy fit with git, smashing square peg into round hole makes little sense.
Like, if someone changes some text in a paragraph, you can't just model that as "this paragraph now contains this new text". You have to model it as "this paragraph used to contain this text, but an uncommitted change changed it to this other text". User deletes an image? You have to still store the image and all the references to it, but with an uncommitted change to delete the image and remove the references to it.
And maybe that's a good thing, maybe a git-like system where the history of every change is tracked is what you want. But it certainly doesn't feel like it'd be appropriate for every application and file format.