Nice bit of thinking to use git to manage versions - unfortunately would have to figure an alternative for OSX (which I use), as 7z doesn’t exist for it, so equivalent would have to be found. Also maybe a node version could be made… horses for courses!
I used 7z instead of a pure-ruby library because it was a fast way to solve my needs. Replacing calls to 7z with calls to, say, tar or gzip would not be hard; I just have no motivation. Nowadays I do everything on Windows.
But I encourage you (or whomever) to look at the code and try to edit the zip calls. (I might consider calling gzip myself, since I have some Unix utils installed on my WIndos machines, but I’m not sure they behave the same as on a proper Posix system.)
Here’s a super-hacky trick you might try instead: On OSX, create a script (in whatever language; maybe AppleScript?) that is called “7z” and have it delegate to native zip program.
Ideally this would be a natively implemented function of the app, but I’d imagine the logic for it would closely follow something along the lines of what you’ve done.
I would love to see a native option for managing song snapshots. The big issues (for me) for simply making times-stamped copies of xrns files are disk space (mostly when on a laptop, etc.) and ease of moving among changes.
Having file copies is in some ways great because I can just load it up; using git makes me have to switch among branches and I have no simple way to load two versions at the same time.
But a proper version control system makes me more likely to commit even small changes, whereas making a full file copy is something I tend to do only when making larger changes (e.g. deleting sections).
ps.Is something like this possible in Lua I wonder, so building a tool to manage it.
A not-quite-VCS approach might to allow multiple Song.xml files in the xrns zip, and someway to move among them. Something would have to track the samples naming and ordering, and ensuring that any sample referenced by any Song.xml is not deleted.
And even then there are likely other song-tracking issues.
An ambitious Renoiser might consider writing a tool that “just” wraps calls to the native OS file copy command and maybe some way to associate comments with song versions. With a simple GUI.