Sunday, April 14, 2013

Going to try using a Git Repo on Dropbox

Making another attempt to get my Supercollider coding practices in line with something sane that resembles how I write code in other languages. When I write code in SC I usually work off of the same set of files on a Dropbox folder so I can sketch something on my laptop, and then have those changes automatically deployed to my "rendering" machine (an 8-core Mac Mini) or my "livestream" machine (an older-generation Mac Mini running Nicecast, Supercollider, and nothing else). While Dropbox provides automatic backups and deployment, it doesn't provide version control, so I end up committing the cardinal sin of using filenames for version control ("20130410-livestream.scd" or the like). So I'm going to try setting up a git repo in the Dropbox with the source code for the Livestream project and see how that works out.

The more difficult issue here is doing version control in a system that's designed to run entirely as a REPL - how does Smalltalk do version control? Periodic snapshots of object instances? In sclang, you can use Object.archive to dump the state of an object to a text file and from there use Git or whatever to save. Which is kind of a kludge - in Smalltalk you're running in a virtual machine that is a Smalltalk object, with no files. So where do you keep the snapshots?

Here's some StackOverflow conversations on using Git with Dropbox:
Using Git and Dropbox together effectively?
Is this plain stupid: GIT Sharing Via DropBox?

And a tutorial:
How to use Dropbox as a git repository.