Eliminate collaboration clutter with Subversion

Collaborating on files with a group presents a unique set of challenges. Where do you store the files? Who has the latest version? What changed?

Let’s say you’re composing a song about Jessica Fletcher from Murder, She Wrote. You get your band together, you lay down the tracks, and there they are on one computer. You can go back and punch in a solo, cut vocals, or whatever else you need to do. No sweat. But what if one of your bandmates lives 800 miles away?

One option would be to keep sending a file back and forth for each change. The problem is that it’s difficult to keep track of changes, and eventually you each end up with a folder full of files and no way to tell who has the latest version.

A better solution is Subversion, a version control system designed to be a single repository for current and previous versions of files.

In my example, the file happens to be a GarageBand file, but Subversion can just as easily handle any other type of file. Developers have been using it for years to keep track of source code and documentation.

Here’s how it works:

  • Create a Subversion repository. You can create a free repository at Beanstalk
  • Get a Subversion client like Versions. There’s a 21 day free trial period.
  • Create a bookmark to your repository in your client. You can find Versions-specific instructions here
  • Check out a “working copy”
  • Add folders and files to your “working copy,” or make changes to existing ones
  • Commit

When you commit a change, Subversion updates the current version of the file with the changes that you made, but also saves the previous version so that you can revert back to it if you need to. If you try to commit a change to a file that someone else has recently changed, Subversion will let you know. If it’s a text file, you can see what the differences are, and choose to merge the changes together.

091001-subversion

By keeping all your files updated and in one place, Subversion is a great tool for eliminating collaboration clutter.

These are the basics, but If you want to indulge your inner egghead and understand more about how Subversion works, I recommend O’Reilly’s book.

Posted by Brian on Oct 1, 2009 | Comments

17 comments posted

  1. Posted by Andy Palmer - 10/01/2009

    Subversion needs a connection to the server to push changes to the main repository.
    Git or Mercurial let you commit local changes more frequently, and as a result, merges are much more straightforward
    You can host projects for free at bitbucket.org (Mercurial) or github.com (Git), and there are the explorer plugins like TortoiseHg

    Might be worth a look.

  2. Posted by Jen Grier - 10/01/2009

    As a game audio designer on a dev team that uses Subversion for everything, I must chime in: version control is the _only_ benefit of this method. You don’t get the great filesize savings that text-based file formats have. If you’re using a service like Beanstalk, I know that’s not an issue, but if you plan on hosting your own server… beware! Audio can bloat pretty quickly with a small team, depending on the project.

    Our solution: We have two separate repositories for compressed and uncompressed audio (MP3 and WAV, respectively). If someone wants to jump into our workflow (or is too lazy to look around with a Repo-browser), they know to check out the compressed folder first. We also try to keep uncompressed versions with minor changes local to avoid bloat, but hey, it’s up to you, your storage, and your bandwidth.

  3. Posted by PJ Doland - 10/01/2009

    @Andy- Although we like Distributed Verson Control Systems like Git and Mercurial, we figured that the abundance of easy-to-use GUI tools for Subversion would make things much easier for non-developers.

  4. Posted by Marie - 10/01/2009

    …..composing a song about Jessica Fletcher? Please, please, please just be making up weird examples.

  5. Posted by Anita - 10/01/2009

    This sounds like a great tool for collaborative files! My question is, how good would this be at managing large numbers of files, as opposed to one or a few?

    My organization has implemented a similar system, in an effort to get rid of hugely clututered shared drives. It sounds like a great idea in theory, but the system itself is extremely frustrating, very slow, searching it is almost physically painful, and it has the world’s most tangled categorization mechanism. Classic example of great concept, bad execution. I’m wondering if there are better alternatives out there, and this is the first I’ve heard of one.

  6. Posted by PJ Doland - 10/01/2009

    @Marie – It’s a real song Brian and I recorded. Just click on the link to hear it.

  7. Posted by Karen - 10/01/2009

    Oh.my.Gawd. That song is hilarious!! Made my day …

  8. Posted by Fran - 10/01/2009

    If you’re going to use Subversion, don’t pay for a client, use the excellent open-source TortoiseSVN instead.

  9. Posted by sheila - 10/01/2009

    SUCH an awesome song! I didn’t know there were others like me- and I’m not a member of AARP.. I thing MSW is comforting, like mac and cheese.

  10. Posted by Dan Benjamin - 10/02/2009

    Rather than Subversion, I’d consider Git (with http://github.com) or Mercurial (with http://bitbucket.org). Both solutions are a bit more modern and have the advantage of working well when you’re offline, if or when you want to share, and in a distributed environment.

    A consideration: at present, Subversion does have more mature GUI tools, but the ones for Git and Mercurial are evolving quickly.

  11. Posted by Alessandro - 10/02/2009

    What if I use openoffice writer (or word) files?
    How can subversion manage them if it only accepts text-based files?

  12. Posted by PJ Doland - 10/02/2009

    @Alessandro – Subversion will work fine with binary files and it will keep track of versions. It just won’t do some of the fancy features like merging.

    If you want beautifully formatted documents that play well with some of the more advanced features of version control systems, you should consider using TeX or LaTeX.

  13. Posted by Justin D - 10/02/2009

    Git is for Socialists. Feh! ;)

  14. Posted by Groovymarlin - 10/02/2009

    Second the recommendation for TortoiseSVN. It’s free, works great, and so simple – it integrates right into your Windows file system. Of course if you’re not using Windows then…

  15. Posted by Mike Busch - 10/03/2009

    @PJ I’ve got to second Dan and Andy (although I bet all 3 of us are devs). Git’s GUI tools are developing rapidly. TortoiseGit is basically a retooling of TortoiseSVN, and is well underway.

    The other thing to consider, is the learning curve. Non-devs presumably haven’t used SVN or Git and starting them onto learning SVN (which can be obtuse with merging/updating/syncing itself) may be just as painful as learning git with less mature tools. AND it will start them behind the curve.

    Just some thoughts.

  16. Posted by PJ Doland - 10/03/2009

    @Mike Busch – Non-developers are far more likely to be working with binary files most of the time. Unlike the text-based files developers usually collaborate on, binary files can’t be merged easily in the event of a collision. How would you merge a GarageBand or Powerpoint file?

    When you’re working collaboratively with files that can’t be (easily) merged, you really should have some kind of locking mechanism. By their design, distributed version control systems don’t really support locking. SVN does support locking, and it is better suited to situations when binary files (PPT, DOC, PSD, WAV, TIF, etc.) are being managed in collaborative multi-user environments.

    Git and Mercurial are great systems for developers working predominantly with text-based files, but they are definitely not the right tool for every situation.

  17. Posted by Tiago Pires - 10/08/2009

    To use Subversion with Mac I would recommend SCPlugin (http://scplugin.tigris.org/). Although they still do not support Snow Leopard, for those running Leopard it is free. Windows users should get TortoiseSVN (also free).

    Although very efficient in storing any kind of file, the true power of Subversion (the capability of merging) can only be achieved with text files. Using it for binaries is not a good idea, since if two persons simultaneously edit one file the second one will simply overwrite the first ones work (although being warned about).

    For non developers there are simpler solutions. Dropbox would be my choice to share files, with a free account for up 2GB of online storage (getdropbox.com).

Subscribe to this entry's comments

Comments are closed for this entry.