I Wonder What This Button Does

by Mike West

42 Reader Comments

Back to the Article
  1. I am as loyal a fan of subversion as you’ll find, but in my office, we frequently run into the same version-control wall.

    Our graphic designers, who also need to do a bit of template editing, are not command-line saavy in the least, and they work exclusively on OS X. Our developers all use TortioseSVN on windows (or the command line on the Mac) to access our repository, but the designers – ha! fuggedaboudit.

    So we’ve tried to find a GUI client they can use. I’ve checked out svnx, smartsvn, scplugin, and others, and all of them suffer from the same problem: when initially checking out a branch from the repository over the network, at some point during the checkout (not always in the same place) they will hang and we’ll be stuck with a spinning beach ball interminably.

    Apart from apache integration, is there a working GUI for our Mac-only designers?

    Copy & paste the code below to embed this comment.
  2. I’m a relatively new user of SVN, and my favorite way to use it in Windows is Tortoise (mentioned already), which integrates SVN into the Windows GUI with contextual menus, etc.

    Alas, there is nothing quite as good as Tortoise for OSX, but “SCPlugin”:http://scplugin.tigris.org/ comes pretty close. Finder integration, file status badging, etc. It doesn’t support every feature, but includes most that you will use on a daily basis.

    Also, I wanted to note that “BBEdit”:http://www.barebones.com/products/bbedit/ has fantastic SVN support.

    Copy & paste the code below to embed this comment.
  3. Danny, looks like we were posting about this at the same time. Just wanted to add that with SCPlugin, I have not had hangups during checkout.

    Copy & paste the code below to embed this comment.
  4. Rick: First, I agree with you about the article title.  It sounded light and fun when I wrote it, but it does turn out to be less than informative as to the article’s content.  Next time, I’ll think about it a little harder (and I do hope there’s a next time… :) ).

    Second, the hooks that Subversion provides are nothing short of brilliant.  I hadn’t thought about using them to automatically deploy based on tags, but it’s a wonderfully simple concept!  I’d take it a step further, and perhaps define certain types of tags that would auto-deploy to distinguish tagging a certain point in development (e.g. “ALMOST-DONE-WITH-2.1”) from tagging a release (e.g. “RELEASE-2.1”).

    Andreas:  Moving files and directories is the main reason I switched from CVS to Subversion a year or two ago.  You’re absolutely correct in saying that being able to easily keep the contextual revision information without needing to remember that this file used to be that other file is stunningly valuable.

    Flavio:  The WebDAV interface is a nice feature, especially when used on a repository that’s set the SVNAutoversion property.  There’s “even a movie demonstrating that feature”:http://weblog.textdrive.com/article/92/holy-auto-subversion-batman if you can believe it.  It negates a little bit of the contextual benefit, since saving a file via WebDAV doesn’t offer the chance to add a useful message along with your commit, but you can get around that to some extent through judicious use of tags.

    Danny:  The Finder plugin that John-Paul mentions is an option that kinda sorta resembles TortiseSVN.  It isn’t quite as elegant, but it’s better than nothing.  I’m hoping that others will contribute some GUI ideas, because I’m strangely in love with the command line and don’t have much visibility into the pretty tools that other people run off with.  :)

    John-Paul: You’re right, BBEdit supports SVN quite well, as does TextMate, Xcode, Eclipse, and a host of other editors.  Leveraging the editor that you already know and love is probably the single easiest way to get into revision control.

    Copy & paste the code below to embed this comment.
  5. I did that once, on a UNIX server at work, with an unlabled blue button. I didn’t even press it, just touched it.


    It was the reset button. Oops.

    Copy & paste the code below to embed this comment.
  6. I did that once, on a UNIX server at work, with an unlabled blue button. I didn’t even press it, just touched it.

    It was the reset button. Oops.

    Copy & paste the code below to embed this comment.
  7. I was dissapointed you didn’t mention any of the other version control options out there. Like CVS with it’s excellent “TortoiseCVS”:http://www.tortoisecvs.org/ windows explorer plugin, or “Perforce”:http://www.perforce.com/index.html which is the system we use at my office.

    I’m sure it wasn’t intended, but you did make it sound like Subversion was the only options out there.

    Copy & paste the code below to embed this comment.
  8. wrong title in the above post.

    Copy & paste the code below to embed this comment.
  9. Mike,

    Thanks for the great article.

    Any ideas on using subversion as the storage layer of a wiki like TWiki? For example, TWiki uses RCS. But RCS is the predecessor of CVS, and CVS the predecessor of subversion.

    I’m thinking of using Kupu as a WYSIWYG html editor and PHP or (if I must learn it) Python to hook into Subversion. Hence, a modern wiki for our documentation.

    Copy & paste the code below to embed this comment.
  10. Kris:  I didn’t mean to make it sound like Subversion is the only option, but I do believe that Subversion is probably the best option for anyone who’s just starting out with revision control.  It’s an open source program, meaning that no one needs management’s clearance to purchase it and start running, it’s ported to just about every operating system out there, and it’s drop dead easy to install and use.  “Perforce”:http://www.perforce.com/index.html, “Bitkeeper”:http://www.bitkeeper.com/, and other commercial revision control systems are certainly powerful, but they’re nowhere near as obtainable as Subversion.

    As far as CVS goes, I consider Subversion to be it’s complete replacement.  Subversion fixes some of the annoying facets of CVS that I consider bugs (moving change logs along with files, storing directory revisions and properties, atomic commits, and more).  For every project I’ve worked on in the last year or two, Subversion has simply been the better choice.  The article, I think, reflects that.  :)

    Andrew: I don’t have any experience using Subversion directly as a store for a wiki.  It sounds like an interesting idea.  :)  I currently run “dokuwiki”:http://www.splitbrain.org/projects/dokuwiki locally as a braindump, which stores all of it’s information in flat files which I rsync to a remote server nightly.  The wiki takes care of diffs internally, so I haven’t worried too much about external revision control.

    Copy & paste the code below to embed this comment.
  11. Hey there, just wanted to add that there is a small typo in the article. The software is called “tortoise”, not “tortise” ;) Excellent article btw, as always!

    Copy & paste the code below to embed this comment.
  12. For GUI clients, I have been using SvnX, which is ok. It does what I need it to do, but as Danny mentions is still not very good for someone who doesn’t like the command line. The designer I work with doesn’t know where to start.

    Has anyone tried the plugin for Quicksilver? I just activated it, but it seems quite promising.

    Copy & paste the code below to embed this comment.
  13. I tried SVN (+ TortoiseSVN) twice, and it just didn’t do it for me.  It’s not that it didn’t have enough features, it’s almost like it had too many features.

    I expected something easier.  I want something that sits in the background and perhaps records the state of my sauce code at given intervals (seconds, minutes, hours, maybe even keystrokes, I don’t know), and all this gets stored in a nice database that keeps track of the changes for me and allows me to restore them.  Ideally this would be automated and I wouldn’t have to give an order to save my work.  As a single developer this is all I need; to go back in time.

    SVN proved to be too much for me.  I found that I could just as easily copy/paste my source code files to a directory every once in a while and save it.  Maybe if I ever work with somebody this will change.

    Copy & paste the code below to embed this comment.
  14. If you happen to be on BSD or linux and have in fact deleted a file very recently, there might still be a chance to get it back.  I faced this once before, and wrote up my experience here:
    http://bluesmoon.blogspot.com/2004/08/undelete-in-freebsd.html

    Hope it helps others.

    Copy & paste the code below to embed this comment.
  15. I Just Like SVN… Iam using SVN in eclipse with sublipse plugin and it’s so simple just a click away…

    Copy & paste the code below to embed this comment.
  16. I use SVN on Dreamhost account to keep files away in case of hdd crash or something and to be able to connect and work in many locations. I’m the only editor of those files, but it’s great to move back in time to restore a piece of code I was sure won’t be necessary any more. The Subclipse plugin for Eclipse makes it very easy.
    At work we use CVS for teamwork synchronization and it does good job as well. It makes life easier, but doesn’t solve the human factor. Everyone in the team has to commit every change as soon as it’s done, not “when I’ll finish the changes I’m going to do tomorrow”

    Copy & paste the code below to embed this comment.
  17. No matter what form of version control one uses, you are only halfway there unless you have a decent hierarchical storage/backup system. I spent a goodly portion of my IT career in storage mangement, and in some cases had to recover DB instances for our version control software to a previous date (ok, we recovered it to a shadow system, extracted what was needed, and updated the online VCS, with the data needed)
    Of course you may not have the luxury of a large disk farm with HSM software and a robotic tape library, but reasonable solutions can be implemented at even the single server level.
    Disk and tape are cheap, when compared to the man-hour cost of lost time.
      That’s my take on it (yes, I’m an operations/hardware kind of guy, well..was, retired this year after 33 years in IT)
    Cheers
    Harold

    Copy & paste the code below to embed this comment.
  18. Two months ago, I would just skip this article, labeling it “too techie”.  But then, some of my co-workers started talking about Subversion, and last week we started using it. And yes, it’s great! Whenever those programming bastards mess up my CSS, I can point right to the guilty one and give him a good ol’ spanking!

    Copy & paste the code below to embed this comment.
  19. If you spend a lot of time on a laptop without Internet access—even if you just take the train to work every morning—“svk”:http://svk.elixus.org/ can be very handy.  It’s a program that interfaces with a Subversion repository, but it mirrors all the history on your own disk, allowing you to check changes into your local repository even when you don’t have Internet access (like when you’re traveling).  You can later synchronize with the central copy of the repository.  Since you have all the history with you, you can do all the neat back-in-time stuff you’d normally need access to the server to do.  And it lets you keep long projects in local branches that nobody else can screw up.  Very useful all around.

    Copy & paste the code below to embed this comment.
  20. If you spend a lot of time on a laptop without Internet access—even if you just take the train to work every morning—“svk”:http://svk.elixus.org/ can be very handy.  It’s a program that interfaces with a Subversion repository, but it mirrors all the history on your own disk, allowing you to check changes into your local repository even when you don’t have Internet access (like when you’re traveling).  You can later synchronize with the central copy of the repository.  Since you have all the history with you, you can do all the neat back-in-time stuff you’d normally need access to the server to do.  And it lets you keep long projects in local branches that nobody else can screw up.  Very useful all around.

    Copy & paste the code below to embed this comment.
  21. Great article. And you’re right to choose Subversion since it is definately one of the best things since sliced bread.

    Even tagging and branching are easy – for Luke Bussey above, just create two small scripts which give you the command lines to branch from the trunk and tag on the branch. Consistency is the key.

    Copy & paste the code below to embed this comment.
  22. Your site is very useful

    Copy & paste the code below to embed this comment.