From VSS to SVN: Part 1

Photo credit: http://flickr.com/photos/ern/471587728
I used Visual Studio back in the day. I was not only making a living by using Visual Studio; I was practically living _in_ Visual Studio. I used it for 10 or 11 hours a day. I loved Visual Studio (and still do).
But there was one piece of the Microsoft Development Kingdom that that I did not love: Visual SourceSafe. (Team System finally replaced good ol' VSS, but I had already started the switch to Rails by the time Team System was released). As much as I kind of hated VSS, I was used to it. And the integration that finally arrived in Visual Studio 2005 was really nice, like a quart of sugar covering a sour lemon.
The integration was *so* nice that I figured that the whole area of source control itself must be just as simple. I mean, come on. Check out, check in. How hard is that? I guess I had to create a new project folder in VSS when I really had to, and I suppose I had to add new files when I created them. But Visual Studio did all that for me. I more or less ignored the Check-in and Add To SourceSafe dialogs that would appear. I just clicked OK every time, and I was fine. I even learned how to do a diff pretty easily without leaving the IDE.
When I started to get serious with Rails development, however, I quickly came up against something people were calling "Subversion". All the cool people doing cool stuff on the Rails wiki used Subversion. The Rails Trac was using Subversion. Everywhere I looked all I saw was Subversion.
I was actually perplexed by it for quite some time. Of course I knew it was for doing source control and I got the command-line tool installed on my XP box. But the concepts were foreign, and I just didn't... get it. In fact, I was a bit miffed at how complicated Subversion seemed to be. It was source control, after all. I mean, come on. Check out, check in. It's not supposed to be this hard. How do I just freaking check out a file? It was frustrating.
In fact, there were a few elements of the typical Rails environment that presented steep learning curves like this. If I hadn't persevered through that initial rough patch Subversion, I know I would have felt justified in giving up on Rails and the whole open source scene along with it. It was tempting to go back to the familiar, safe, sugar-coated Visual Studio that I already knew.
But I'm so glad that I didn't give up. So glad. I don't know how I could ever live without Subversion. Or rather, I don't know how I ever lived with SourceSafe.
Uphill Both Ways
Looking back, I see why I had such mental difficulties. Seems silly to even talk about it now. But Brian and I try to blog about all of our .NET-to-Rails experiences, even the silly ones, so here goes.
My problem was that when I tried to first figure out Subversion, I was actually trying to climb two learning curves simultaneously:
- A new toolset: the subversion command-line tool and the TortoiseSVN for Windows; and
- A new mindset: a very different philosophy about how source control should work.
Those of you who, like me, are from the Windows side of the pond, probably know of Eric Sink. He wrote an excellent series of articles on source control systems. My problem was, I hadn't read those articles, and I had no idea there even were different approaches to source control.
I mean, come on, it's just check in, check out, right?
Wrong. And if you're already familiar to the VSS philosophy of source control, making the jump to Subversion can be discouraging.
So next time, I'm going to help you get Subversion up and running on your machine, whether it's Windows or your shiny new Mac. We'll even dip some toes in the water by getting the Rails source code onto your hard drive. (Ever wish you could do that with the .NET libraries?).
But first, I need a show of hands: how many of you out there are using Windows for your Rails development, and how many have switched to a Mac (at least for purposes of learning Rails)? Please drop a comment, with at least the word "Windows" or "Mac" so I can get an idea of how to focus the next article or two.



I switched to a Mac in January for the purpose of web development (i.e., Rails) and design (not to mention all the other added benefits known by the Mac community). Also, having an underlying UNIX environment is amazing, something that Windows could never match.
I stayed on Windows, but considered to switch to Mac many times. Windows, I have realized is not the ideal Rails development environment.
I haven't felt like dropping $2k on a Mac, so it's Rails on Windoze for me.
Started Rails on windows w/subversion. Now on a Mac. Can't use Subversion at work, but I use it at home for personal projects. I think a tutorial or two would be an excellent idea.
I am using VSS on Windows at work, I just downloaded all the SVN stuff and was thinking giving it a ride next week. I think touching the repository side of those 2 source control systems would be interesting too.
I hope you have seen the SVN to TFS bridge will be released soon.
http://brennan.offwhite.net/blog/2007/05/22/new-subversion-bridge-to-team-foundation-server/
Also, for .NET we may also soon have IronRuby. I know IronPython has reached a point of stability while the Ruby port is still in progress. With all of these details we may soon see many Ruby projects on CodePlex and in some corporate environments. I know a few developers who would get excited about that.
I'm using Windows at work and Mac at home, both (mostly) for Rails development. I must say that Mac is my prefered platform.
I'm still using Windows, both at work and at home. But many of my friends have made the switch to Mac, and I have to admit I've been thinking about buying a Mac more than once lately.
Still 100% Windows @ work and home. Was thinking about making the leap to Mac, but it's a cost issue @ this point, so I'll stick with Windows for a while. I'd love an overview of the SVN implementation
Mac. Would love to see the article on SVN you're suggesting.
Like Jesse, I haven't really got the cash to spend on a Mac - actually I do but the wife would kill me ;o) so I'm sticking to Windows with TortoiseSVN, which I also use for non-ruby/rails code too.
Mac. Switched in the fall last year. Was doing Rails on windows before, and tbh, it really was not all that much trouble. Yes, it's easier on a Mac, but that's true for a lot of stuff.
I'm on windows. I'm completing my first Rails project, and having a guide to subversion before I started would have been very helpful three months ago when I first got started--I've wasted a good 10-15 hours on this project just dealing with subversion headaches.
Linux.
And our team is split half between linux and mac.
Linux here.
I recently made THE switch. (I was on windows before)
Linux.
I just want to point out that if you really want to understand Subversion, you have to know its weaknesses as well. Just because its better than VSS doesnt make it a perfect system for everyone. There are good reasons why svk exists or even better: there is mercurical, bazar, git....
Windows here, although I'm mulling over a Mac purchase, since the kids use Macs at school. OTOH, youtube and Flash games seem to work just as well on Windows...
Windows. I'm looking forward to the article.
Windows and Ubuntu Linux.
I'm pretty mixed up with OSs - I use Windows XP at home, and I've got an OSX workstation at the Uni, with another XP on Parallels. I used both for Rails development (with Subversion, but my main repositories are on my Webhoster, who is running Debian), but switched to using XP exclusively for Rails development, because the Testserver for my current project is also running Windows. That turned out to be a sub-optimal choice, which I'm regretting now - it turned out I needed backgroundrb, which is only available for UNIX environments. But it was too late to switch everything over to Linux, so now my Rails apps all run under cygwin, which works surprisingly well. Contrary to everyone else's opinion, I don't particularly like OSX - I don't care for the looks, and there's lots of little usability differences that set my teeth on edge. So my resolution is, (after this project is over), to keep using XP for private stuff, but force myself to learn and use Linux (Ubuntu probably) for development.
Windows now, but I see a new MBP in my near future.
Mac. Still developing in .Net on Windows (running in Parallels) and trying to learn Rails. I'm looking forward to the day when I can do all my development on my Mac (without using Windows in Parallels).
Would love finally figure out subversion. Still all windows here until I pull in more $$$ for a Mac.
Windows @ work Mac @ home
Linux.
Using Win32 for dev at work, Mac OS X at home.
Man this article couldn't have come at a better time. I'm glad I'm not the only one that admits to using VSS and actually admits that Subversion is hard to get used to.
I get my RoR's on a Mac.
Windows home and at work. Have been eyeing Mac thought. :)
Started on Linux and now I'm on MacOS. But I think I will go back to Linux :)
Mac for Rails, Windows for .NET (duh). Source control which does edit-merge-commit: priceless.
The VSS model has caused more problems than VSS corruptions. Works ok for a small group, but for a large group, it's a royal PITA.
I'm stuck with StarTeam at the moment. OMG. Just. Dont. Do. It.
Started my journey from .NET to Rails on Windows. Just recently bought a Mac (if you can't beat 'em, join 'em, right?).
I have to use Windows in work because of certain necessary applications (also IE7..). I use Windows to edit the code but the code is saved to an ubuntu box via a Samba share. The actual code runs on that box as well. So Windows is a code-editing machine and Linux is a code running machine. Getting Rails to run on windows can be more of a hassle and I also needed things like backgroundrb. Though I think I would prefer having just Mac OS X and like windows as a virtual OS or something though. I sympathize with you on the confusingness of source control. It took me a long time to really get it. I recommend TortoiseSVN as being ESSENTIAL for using subversion in windows. Although I also use eclipse with the subclipse plugin.
Conclusion - I'm happy to use Ruby on Rails
I am just starting out. So far I have been fooling around on windows, trying TortoiseSVN. Right now I am looking at Aptana; though I have not looked yet at the SVN type integration in aptana. Any help/advice is greatly appreciated. Thanks!!
I switched to Mac earlier this year. Using Parallels for .Net dev.
.NET on Windows at work and RoR on Ubuntu Linux at home. I agree that Subversion had a huge learning curve coming from VSS.
Windows here (using Vista). Have thought about making a switch to Mac, but every time I do my wallet blurts out a "whatchootalkinboutwillis" and slaps me across the face. Other than the money, I wouldn't be adverse to switching. (And I should note that Parallels is the only thing that would make that switch bearable.)
Rails was the final push I needed to finally get a Mac. Love it. Getting another soon.
Made the switch to Mac for Rails.
Windows. Using Aptana IDE, along with InstantRails.
Mac for development at home and work, same laptop in fact. Used VSS for about nine years at various companies, have used SVN for the last year at my current work (doing php).
I didn't find the switch from vss to subversion too difficult, but I've read the Eric Sink articles and I already knew about edit-merge-commit vs checkout-edit-commit before I did so.
Wow. Put one more down for Mac at home, Windows at work. At least we're using CVS at work. (But that's down to the clout of the senior dev. Half the junior devs and the project manager all prefer the checkout-edit-commit world of VSS.)
I went from GNU/Linux to MacOS for my personal machine a long time ago, not too long after OSX was released. Windows? I'm sorry. pats you consolingly
Windows, Mac, Linux, sometimes Solaris and *BSD. (in that order)
Windows at work with svn and an ubuntu server, mac at home with parallels running windows and ubuntu
Windows to Mac !
Last year, a friend told me of nothing but the "beauty" of rails development. So, he convinved our employer to buy us tickets for railsconf europe and I was staggered to see what rails could do.
With my mind set on learning rails, the first order play was to buy myself a "shiny new" macbook and all the rails and svn jiggery-gubbins to start my new life as a rails developer, but pressures at work meant that I couldn't spend any real time learning it - just talking to people about how great it "might" be if only I'd learn it.
One year on, I've now left that company and started my own business - being my own employer, I've managed to give myself a few weeks to start learning rails (and svn) and I've never looked back :-)
Been using a Mac since OS X.0 Public Beta, servers run various flavours of Linux, SVN for source control, have used CVS in the distant past!
Mac. Switched from Windows mid-2006. Never going back. Look forward to your svn observations. All rails work.
Doing all my work on Windows, and quite happy about it (InstantRails + Komodo + TortoiseSVN). I have some spare Linux boxes around for hosting and capistrano. What's this hype about Macs and RoR about, really? I get it, TextMate is good. Anything else?
I'm using Subversion with Rails on Windows, and previously used the .Net environment.
Been on other things lately, but have to get back to Rails soon. Would like to know more about Subversion because it's going to be more and more important for me as time goes on.
Thanks for the intro.
Windows, SVN, Eclipse Aptana, Notepad++, TortoiseSVN Do mainly Rails, PHP, and some .NET with VS2005/VS2003.
Been waiting on the next MAC os to determine whether I want to make the jump to Mac with Parallels or VMware Fusion.
Good post once again.
I use Windows for my personal and professional development. I also used VSS for a number of years but when I was introduced to the Agile Methodology, I was introduced to Subversion. It was over. I've never used VSS since.
I have considered getting a Mac because I can run Windows on it. However, I can pretty much guarantee that I'd spend all my time in Parallels or Boot Camp with Windows. Since that's the case, why not just stick with Windows.
Windows XP and Ubuntu Linux.
Mac is too overpriced
Mac! C'mon people!
win @work and linux @home I can really use your article
windows
Just switched from Windows to Mac
Mac
New Mac - for Rails development and cross-browser testing.
Looking forward to your next post - very timely! I'm going up the Mac learning curve and just installed Subversion the other day ...
Linux right now contemplating getting a Macbook after I have to turn the lappy in since it's leased and not worth purchasing...
Windows at work and Mac at home. Just switched to Mac at home almost a month ago and loving it so far. It amazes me how intuitive it is after years and years of Windows...
I use Windows for Rails development. Have got a Mac at home but haven't installed Rails on it yet.
I play, work and make living using Windows :-D
Worked with OSX, Linux, FreeBSD, all those. No switch in the horizon.
Still fixing cross platform "incompatibilities" for some plugins, gems and libraries.
But, beside all the bad things of Windows have, the market share for using the platform in some cases is still strong (mostly licenses investments).
Looking forward for the SVN articles :-)
On a Mac for Rails at home. Windows for .NET at work.
Mac + Rails at home (Win/Linux/Java at work). Did some rails on Win at home and found it to be fine. Moved to Mac for various reasons...
Mac here
Windows
Ubuntu Linux
I switched to Linux. using Fedora and Ubuntu.
MAJOR CORRECTION: Visual SourceSafe DOES, in fact, allow multiple developers to work on the same file. There is a checkbox in the VSS Admin labeled, "Allow Multiple Checkouts". This effectively makes VSS behave exactly like the Copy-Modify-Merge model of Subversion. I've used it for years. It works perfectly. If you read Microsoft's docs, they recommend this method for larger teams. IMHO, all software teams who use VSS should activate this feature, regardless of team size.
Two issues:
Microsoft disables this checkbox by default, so most people don't know that Visual SourceSafe can work this way. RTFM.
It is a repository-wide setting, which is a little limiting [but was never a problem for the teams I've worked on]. Subversion can work either way down to the file level - very handy.
Gentoo Linux, SVN, Aptana / KDevelop / Komodo / Midnight Commander's built-in text editor.... anything you can open and start to write code for project in Rails, Python, PHP, Perl etc. Firefox with Firebug as main browser while profiling/debugging, MS IE 6.0 running with help of Wine within Linux environment. MS Windows XP running in Parallers VM, just in case =)
I would probably switch to a Mac if I didn't write Windows software for a living. I've got to say, coding on my Vista laptop using VS2008 and TFS is quite pleasant. Many of my co-workers are having quite a difficult time with TFS, which follows a workflow much closer to CVS, Subversion, et. al. I agree that it's a much more powerful way to work, specifically the view changes via changeset (patch), blame, etc.
That being said, I do Rails development for fun. I've never had any particular problem doing it on Windows. I can run Apache, MySql, Rails, etc. and deploy just as easily to my Linux based hosting provider.
Textmate does look super cool though. :)