New optional autosave behaviour: tracking changes instead of saving full files
Right now, autosaves save the full file as is at regular intervals. This is logical, makes sense for smaller projects. However, with larger projects, this creates issues. The large amount of data written tends to cause blender to freeze for a while with larger projects. It also wears out SSDs faster than necessary.
Writing hundreds of megabytes or even gigabytes at regular intervals doesnt sound like a good idea, but disabling autosaves also is not an option since crashes can happen at any moment.
I'm proposing a new user setting that can be toggled, where autosaves only keep track of changes made since the last proper save, either in a git-like way or more better just as a list of commands for actions taken since the last save that merely gets appended to. The latter would allow continuous autosaving by appending to what basically amounts to a text file.
The disadvantage of this would be that recovering an autosave would take longer and requires the original file to be present, but both of these problems are minor, at least in my opinion, because autosaves are meant to allow recovery after crashes anyways, and deleting the original file after blender crashes and then trying to recover it is not something i consider anyone does.
The advantage is the aforementioned possibility for continuous autosaves as well as drastically reduced drive writes, in theory eliminating the freezes, or at least making them unnoticeable.
It also indirectly could allow a longer list of undo steps all the way back to the previous regular save (naturally the normal undo steps setting would still work if there happen to be less than the specified amount of actions taken since the last proper save).
Some problems i can see with that is that some actions would take a while to compute when recovering the autosave. It can be somewhat mitigated by parsing out actions that get reversed later, for example adding a modifier and later removing said modifier. There should also be some sort of visual feedback, maybe a progress bar of sorts showing the user that something is happening.
I can also see how people might prefer the current system, especially for smaller projects where the advantages can be minimal at best, which is why i think this behaviour should be opt-in via the preferences.
2 Comments
It might even be helpful to have a per-project setting for this, with a setting in preferences to define the default behavior.
I like the idea. I thought of something similar the other day, but without relying on auto-saving (which I personally don't like). Basically, if the user were to close Blender with unsaved changes, a pop-up window would list the number of changes since the last save or since the file was last opened.