Source code control (RCS, VSS, etc.)


So as part of professional development, I assume everybody uses some form of source code control and revision tracking.  This allows multiple developers to work together, and also a way of tracking changes.  Sometimes they’re also used as a way of ‘branching’ off new features and then integrating them back in once the feature is stable enough.

My question is more for the hobbyist who works alone.  Generally there’s no need for many of these features.  So do most hobbyists use some sort of source code system for their own projects?  If yes, why?

For myself I do it just as a way to track changes.  I never need to branch anything.  There’s nobody else that I share stuff with.  I suppose I also use it in a limited way to track bugs.

So, do you use a source code control system?  Which one? Why?

Thanks for taking the time to answer.
–Grant


Comments (34)

  1. I just use source control when I feel a project will need an extra backup and a way of tracking changes, as you say.

    Mostly it’s just checkin-checkout when I feel like it. Sometimes I label for versioning’s sake. I only pin files rarely, in an attempt to keep me from destroying my own work unknowingly. 🙂

    I don’t see branching as part of my work process, as I don’t work alone on projects large enough for that.

  2. Smelly says:

    Absolutely I do. If for no other reason then because I always have a fallback version that I know works if I go too far making changes.

  3. haacked says:

    I definitely use source control at home. Primarily because of the change tracking. I think that’s very key. Also to keep in the habit.

    I use SourceGear Vault because it’s free for a single user license.

    I use GotDotNet workspaces for my personal code library since I want to use it at work and at home. But I want to change that since Workspaces is not robust at all.

  4. Andy says:

    I’ve used VSS ever since I can remember. Why? It comes with VS and it integrates with VS better than anything else I tried (this may not be true any more but 10+ years ag the competitors).

    I use it for change tracking and rolling back when I decide I’ve been too clever for my own good.

    Branching etc have been no use to me at home.

    I have no need for command line stuff even though I’ve been told many many times that apparantly I’m not a real programmer if I don’t 🙂

  5. Where I find it useful is when a client says, "Please add feature X." And you spend the next hour trying to convince them NOT to add feature X. But they are adament, and paying the bills, so you add Feature X. Once it’s been implemented, they realize you were right and say, "OK, get rid of it." That’s where source control comes in, I can just revert back to the point before Feature X was added.

    Now, if only my ethics weren’t so strong, I’d charge them for the time it would take to unwind the changes sans source control. 🙂

    (I guess this doesn’t really address your question since you’re asking about hobbyists working on their own projects, but I’m a solo developer, so I kind of fit into that category, even though it’s working for clients. For my hobby projects, I’m pretty lazy on using source control. When I do, it’s more for rolling back if I head down a path I’m not too sure about…)

  6. Grant says:

    Close enough to be worth the read. I am still curious about which source code control system you use.

  7. ShadowChaser says:

    I do not use a source control system at home. I would *love* to use one – unfortinately, there is nothing suitable for hobbyists.

    SourceSafe is notable because it ships with Visual Studio. However, the fact that you need access to a Windows Domain and integrated windows authentication makes it next to useless, even in small/mid-business companies.

    I realize that it helps Microsoft sell more servers, but it makes roaming next to impossible. I can’t work from home without a VPN – going through the VPN is alot slower than an IP connection.

    I would love to see a CVS source control plugin for Visual Studio. There arent any (good ones) available because Microsoft has strange licensing requirements for the SCC api (why?).

    As a hobbyist developer, sometimes I’d like to work with one or two other developers in remote parts of the world on a project. As Visual Studio ships right now – I can’t do that. Thats why CVS is nice – I could use the various community sites to work on the code together.

  8. Jeff Parker says:

    Well I use Source Safe plain and simple, it is free with my MSDN subscription, integrates into VS, yeah I have several complaints about it, and can’t wait for team system to come out. Yeah I will install team system at home unless the source control for it proves to be worse, however Source safe works for what I need at home.

    As far as why, well I learned same way the hard way, it is just a good idea never know when you want to roll something back.

    One difference between working on projects at home and at work, alchohol. Sometimes when I have a few beers in the evening working on a small project is fun and relaxing. However, there was I know more than once when the few beers turned into a lot of beers, or Tequila shots with friends earlier and the next afternoon when I finally woke up and got out of bed and seen nothing would compile because for some reason I get it in my head late at night in drunken stupors to write code. It is nice to just hit roll back and forget you ever tried some of that stuff. But then again there have been mornings I woke up and say hmmmm, how did I do that. But that was back in the old com days, don’t drink much anyore, hangovers hurt worse as you get older.

  9. Josh says:

    I just started using SubVersion. Its actually working out great because it lets me not only use it for source code, I sync files I like to carry on my laptop and on my desktop. The Tortoise SVN ui is okay (a little slow).

    Also, ShadowChaser, I tried using a tool to integrate source control into VS, but they work on completely different paradyms. CVS is opportunitist, while VS expects a pesimistic locking scheme. I just gave up on integrating the two. Its not the integration that is a problem it is how VS expects the two to interact.

  10. Kyle Heon says:

    I’ve tried many source control systems at home, including VSS, Perforce, and most recently Subversion. I never was able to get Perforce to work and have tried on many occassions. I have since adopted Subversion at home because I like the Explorer based approach (using TortoiseSVN) plus it’s free and at this time fairly well supported by the community. As for bug tracking I don’t bother at home but at work we’ve tried Bugzilla and Trac. We recently setup a Trac instance that is being rolled out company wide to handle all of our bug and feature tracking. Trac integrates nicely with Subversion and is free as well.

    For source control at work we use StarTeam, purchased back when it was owned by StarBase (now owned by Borland). It’s pricey but has lots of tools, many of which we don’t even use. Personally I’d like to switch to Subversion at work so that everything can be source controlled, sales sheets, proposals, etc as right now only developers have access to StarTeam ($500 or so per seat).

  11. Jeff Lewis says:

    I use subversion with the subversion binaries and the repository on a 512M SD card.

  12. I use CVS through WinCVS for my hobby projects and for those projects at the office where I am the only developer.

    The reason for my using a version control system for these projects is, that I want to be able to undo things if things go bad (which actually never really happened), and it kind of nudges me to document what I am doing while checking in. Those logs are a great tool when you look at your code three months later…

    Another reason is that it provides an easy way to use the same source code at the office and at home. I simply synchronize my CVS repository (which resides on a local disk at both locations) with a copy of it on a USB memory stick.

    I tried using Subversion a bit (through TortoiseSVN), but I realize that, more than anything else, I want a user interface that can flatten the directory structure. WinCVS provides that, but I haven’t stumbled across any SVN client that allows me to do that. And I don’t want to use any UI that integrates with Visual Studio (e.g. Ankh, which provides SVN support in VS2003), because I often want to use it with other data than VS projects.

  13. When working on my own projects I use WinCVS. I find it to be very lightwreight and easy to use. Although I do not share my write access with anyone, it is nice to being able to revert back or get the earlier version that is suitable for production ( as opposed to the later version with more features but not tested enough or with obvious bugs).

  14. CVS.

    It’s stable – highly stable, scalable (it’s client-server), works very fast even over a ADSL VPN, stores everything as text files (source code recovery is more probable in case of a repository corruption, which, in 4 years with a repository of ~500MB, never happened).

    It’s free (as in free beer).

    There are a lot of 3rd party tools that work with CVS, e.g., changelog generators, repository browsers, statistics, etc. It integrates nicely with bugzilla, which we use for bug tracking.

    I love having not a single file read-only just because it’s under source control (as opposed to VSS).

    I love being able to ci/co a file without needing to ask someone for "hey, please, release this file for me". On a large staff, this is great.

    I have a few horror stories about VSS. I lost sources from a lot of projects due to VSS repository corruption. I won’t come back to it again in 100 years.

    The only scenario I’ve seen VSS working nicely is a single developer, on a single machine.

    We’re considering upgrading from CVS to Subversion in the near future.

  15. Mike Weiss says:

    I use Perforce at home (free 2-user license). Professionally I’ve used VSS and ClearCase LT.

    I had no trouble setting up Perforce on several PCs at work and at home, I’m not sure what issues Kyle had (maybe setting up the "ClientSpec"?). Here is my pitch for Perforce.

    1. Changesets group multiple file adds, removes and edits into one atomic operation. It keeps track of these change sets, so it’s dead simple understand later what you’ve done historically across a project, not just by file. (Think easy viewing/rollbacks of features, not just files)

    2. Integrates w/ Visual Studio, Office, and Windows Explorer (that’s new).

    3. Has a GUI ( Windows, Mac, and Linux), command-line on most platforms, web and ftp front ends, and an ODBC driver(GREAT for reporting).

    4. Has a CVS-like “annotate” feature (see what version each line of a text file came from). I love this feature.

    5. Great branching and merging, not that I need that at home.

    6. Simple but effective bug/feature tracking called Jobs. Track those changesets by what feature or bug they correspond to. Jobs optionally integrates into some bug tracking systems as well (bugzilla, and something else I forget, or write your own w/ an API they provide)

    7. A better then VSS (I hate those working directories) way to map SCM files to local ones.

    8. It’s also fast, efficient, scriptable in several ways, and well documented.

  16. I use Subversion for my home hobby projects. I prefer to use version control to track changes also.

    I do a lot of branching under Subversion. Over time, I’ve built frameworks that may be shared by two or more of my projects, so I find myself doing a lot of branching and merging of my frameworks between different projects.

    I also like AnkhSVN for VS.NET integration and TortoiseSVN for Explorer integration. Both work well for me. They’re not as speedy, but both work really well and are very well integrated into their respective environments.

  17. I use Vault at home because it’s free and has some features I can’t live without. Changesets are important to me. I want all my code to commit simultaneously or not at all. It’s easier to rollback to a version when you know that all the changes for that issue were rolled in together. I don’t want to crap-shoot with my work. Also, you might give branching and merging a try – they’re not difficult to leanr – especially with Vault’s wizard and are incredibly useful. Want to update that WebService code you wrote to take advantage of XmlSerializer instead of using XmlNode? Create a branch and take your sweet time. Got bug changes to the production data access code in the meantime? Update the truck and then merge the changes into your branch so you don’t have to re-implement all your bug fixes after you completed the XmlNode – XmlSerializer transition. Want to scrap the whole idea? No sweat – you never changed your main codebase. Want to make the change? Merge it! Want to go on developing version 2.0 for a new client while still honoring your support contract with your first client on version 1.1? Branch and merge are essential!

  18. Mark Hoffman says:

    Most of my clients use VSS and even for my own projects I would use VSS. Just like others, I used it for even small projects because I wanted the safety net for when I accidentally delete huge chunks of important code because I had a moment of utter stupidity.

    I’m a recent convert to Vault and I’ve gotten some of my clients to move over. I’ve grown weary of having to fix VSS over and over again. Vault is faster and I haven’t had an ounce of trouble with it. Furthermore, for some projects we require remote access to the code repositories and that’s something we can’t use VSS for. (And we’re not inclinded to use CVS or others like it.)

    I still consider myself a newbie when it comes to fully taking advantage of source control. I still fumble with the concepts of branching and merging, but I’m going to have to learn soon. Projects are getting bigger and bigger….

  19. Ornus says:

    Subversion since it is free and there are various tools available (TortoiseSVN). I’ve tried SourceGear, but liked Subversion better (less problems).

  20. ShadowChaser:

    Actually, VSS does not require Windows Authentication integration. It offers this feature, but does not require it.

    It does require that the database is on a file share that is accessable by all users. However, file shares of this type have been around since before Windows 95, so that shouldn’t be a problem.

  21. b.gr says:

    I’m using VSS to keep track of changes currently but started to look for another solution so I can integrate some kind of bug tracking – which will be next on the test agenda :). So far, Subversion and Perforce are candidates because they are free for the intended scenario, provide the neccesary hooks for a bugtracker, separate between client and server and handle submits/check-ins/whatever you call it atomic. Thanks to the comments here I have to look into SourceGear Vault soon 🙂

    OT: As a suggested read for the newbies to Source Control: http://software.ericsink.com/scm/source_control.html

  22. Twyford says:

    I use CVS off a Linux server. My front-end is a great little open-source tool for windows called Tortoise-CVS. Really worth looking into. It hooks into explorer context menus.

  23. SC for me is a huge net that I can fall back on.. aside from the usual daily check ins/outs if a branch of development on some new idea or some new way of doing things (refactoring) doesn’t pan out, I can quickly and easily revert back to the safe, working version

    Using Sourceforge Vault. Free single user license, Visual Studio integration, communication via Web Services which let me travel and still be able to work on projects (securely since Vault is using VSE to encrypt data and using SSL as an added layer of protection, mostly because it’s easy to enable in IIS) is totally awesome and most of the reason why I moved to vault from VSS.

  24. Alain Tésio says:

    Another use not mentionned here:

    I use CVS on Unix to track changes in the machine configuration.

    It wouldn’t be so clean with Windows and the registry stuff, on Unix all configuration is on text files, essentially in /etc

    I have a script which runs cvs with a comment, add new files and remove files which have disappeared.

    For example: configcommit "New antispam filter" or configcommit "upgrading packages"

    Very useful when I have a problem and need to check what happened recently

  25. Arild Fines says:

    As the developer of AnkhSVN, I wouldn’t trust anything besides Visual Sourcesafe with the Ankh source…

  26. I use Perforce at home, myself; partly to have a repository of all my projects in one place, rather than having my working projects directory crowded with a lot of old projects.

    Also, I like the facility to be able to roll back to older versions, should I go down the wrong route somewhere in the design of later versions, but also because I may still need to support an older version while working on the newer one.

  27. After trying and failing several SCC systems, I finally got hooked on subversion. I like it for several reasons.

    1) I found an outside service to host it, which gives me a backup.

    2) I find I am braver with refactoring when I know I can go back. (I have only actually reverted once, but I’m braver)

    3) The dicipline of writing checkin comments as I go keeps me on a single task.

    My choice of subversion was simple — It was the only one I could make work in less than three hours. I really like the tortiseSVN shell as well.

  28. Definitely use VSS for projects mainly because I get so caught up on making changes that I end up with some things working better while other are worse. Then I can compare a new version with an old one and merge them in a way to include only the best part.

  29. Nate_S says:

    Anyone looking for a new scm/version tracking tool should checkout Evolution. ionForge has it on their website to download for free. It’s easy to get it up and running and if you want to pay them for the multi-user version then you can collaborate via TCP/IP. http://www.ionforge.com/?code=254883