I don’t think it would be THAT difficult to implement, and would be great for automatically versioning patches.
The idea would be to set up a local GIT repository and have an option to save patch files in it. So when you save a patch (as opposed to autosave) it gets added to a git repo. Even if it’s 100 local to your work directory it would allow versioning and to some extent allow showing differences with git diff.
Just an idea. I’m not volunteering to do the coding
Not so sexy, but can’t you already save as into a folder that’s a git repo. Of course you would have to manually commit at the desired intervals, but unless I’m missing something (which is likely) it should work?
You could probably make a little Python or bash utility to watch a folder of patch files and then commit at regular intervals.
But you could also just set up a utility to make backups instead of commiting to a repo (would take more space since it’s not doing any diffs like git does) but would be more user friendly to the git-averse. Something based on this gist: https://gist.github.com/JrMasterModelBuilder/4eff31252815669d90d1040be912a303. You could hack it to be a little nicer for the VCV Rack use case like giving it a folder instead of a single file to back up and increasing the sleep time. (Probably also making some syntax changes to work with a modern version of Python.)
If I end up hacking on this, I’ll share the results
I think that making it as module as @mixer suggests would be easier (if it’s possible), and also would allow other users to use this functionality. I’ve been brainstorming something like this for a while, ever since this thread: Renaming Conventions: Version Control System.
Could forget about GIT, and just make a module that would “save as” when triggered with -v1, -v2, etc. intelligently appended to the patch filename. That’s probably too much clutter for many, in which case perhaps the module could create a folder for the patch and keep all the versions in there. In either case, I think it would be less work than including GIT and setting up a repository. Another benefit is that the patch files would still exist normally on the users machine.
Yeah that’s what I’m personally thinking the more I ponder the Python script I suggested (i.e. just make it a module instead of an external script). I think this is similar to how DAWs do backups, if I’m not mistaken.