Fog Creek Software
Discussion Board

Version control system in a one-man project?

Is using a version control system in a one-man project a good idea?

Two years ago I transferred my project (a learning app written in Authorware) to another developer. And the first thing he did after I copied the project files to his PC was put everything into SourceSafe.

I didn't use a version control system when working on that project -- every time I made important changes I created a copy of the entire project folder and named it accordingly, for example, 'Copy 09 -- fixed the main menu'. When I needed to rollback, I simply replaced the working folder with the backup copy.

Now I'm facing the same question: use VCS or not. The project I'm about to start will be a one-man project that will include text files, excel tables, pictures and Delphi and CPP sources.

Should I bother using SourceSafe for this project if I'm not going to add extra developers? Any thoughts will be appreciated.

Vladimir Golovin
Wednesday, December 25, 2002

Yes, it is a good idea.

I think SourceSafe is probably overkill for a small single person project though.  Here's one that I like that is free for single developers:

There's also a FreeVCS product specifically for Delphi that is going open source.  The Delphi guys like it alot:

Mitch & Murray (from downtown)
Wednesday, December 25, 2002

I vote yes.

Sure it will be the same as your folder copying system but will have the added advantage of ease in checking differences between versions. Also, it's nice to be able to document the changes with the system rather that be constrained to what you can type in a file name field.

X. J. Scott
Wednesday, December 25, 2002

I didn't know about FreeVCS. Anybody knows how well it compares to CS-RCS and Perforce for small teams?


Frederic Faure
Wednesday, December 25, 2002

Absolutely. You already understand and use versioned backup systems.
Why not let the computer do the work for you?

Plus the computer can then do other work for you--create branches, mirror source on build machines (or another directory on your machine), let someone else help you for a bit with automated merging, etc.

I'm trying out CVSNT (server & command line client) + TortoiseCVS (client) right now. Tortoisecvs integrates into the windows Explorer which makes it very easy to use. There are lots of other CVS clients too, mostly (like these) open source. The one drawback of CVSNT is that they reccomend running it (the server) on its own machine; I'm running it on a server which runs a whole bunch of services but isn't used as a workstation.

I haven't looked much at the other tools mentioned here, though I think Perforce is good. Can anyone compare the tools mentioned so far?

Wednesday, December 25, 2002

QVCS is excellent for one-person projects; I use it myself:

Troy King
Wednesday, December 25, 2002

I believe Perforce allows 2 user-licenses for free. 

Wednesday, December 25, 2002

Strange that no one mentioned CVS.  There is good quality CVS server on NT now (CVSNT check it on and WinCVS very good GUI client.  Setting the server is bit tedious. But you have to do it only once. Also there is lot of help available on the Internet to setup the server

Nitin Bhide
Thursday, December 26, 2002

I highly recommend it, even for a one-peron shop (like the one I'm in).  I use VSS because that's what I know, but I'm sure the other systems mentioned here offer the same benefits I've come to enjoy/need:

1.  File/Project Commenting
2.  Backup & Archive files & projects (just in case you don't totally trust your SysAdmin or their backup software).
3.  Branching/Versioning - Separate "demo" or "limited release" versions for the boss(es), so you can keep coding the next/current version of the project while they view an isolated codebase.
4.  Timestamping - For situations like "so what changed on Monday that might have broken things?"
5.  History, Rollback & Diff - Compare files against old versions, grab an old version of a file, what's the difference between A and B, etc.
6.  Organization - Keep all files for the "Get A Big Raise Project" in one location...Helps with the "so where did I put that damn DLL I modified 4 moths ago" issues.

I could go on...None of the above are specific to a multi-developer shop.

Granted, it's definitely more work to integrate using SC into your build/deployment routines.  I've found, however, that it's saved my ass on more than one occasion.  In a one-person shop, you're probably working on about 40 different things at once.  SC really helps with (a) keeping track of the things you've done, and (b) providing a safety net if something hits the fan (especially Diff & Rollback).  I've found that the risks of the "oops" factor are greatly reduced by using a SC system.

Jeff MacDonald
Thursday, December 26, 2002

Other than saying yes, I'd use the following criteria when deciding which system to use.

If its mostly a Microsoft shop, and its a single platform and remote working isn't an issue I'd choose Visual Sourcesafe because it integrates well with their developer platforms.  There is a remote client available, and server but I haven't tried it in earnest enough to say yay or nay.

If its a mixed platform shop and people are happy with using command line utilities and scripts then I'd use CVS.  Personally I don't like WinCVS and I've not found it necessary to use a graphical interface to CVS.  Remote use should use ssh.

If there are a great many products with interlocking sources then I might well consider Perforce but that shouldn't be necessary for a single developer.

Its worth bearing in mind that if you're an MS developer that the MSDN Universal Subscription gives you Visual Source Safe along with the rest of the development and target OS's.

Simon Lucy
Thursday, December 26, 2002

And don't forget -- projects that start off as "one-man" don't always stay that way (e.g. PHP). Do what's a balance between flexibility (maybe you'll have other developers. later) and convenience (you don't want to spend too much time on project administration).


Joe Grossberg
Thursday, December 26, 2002

I use SourceSafe for projects at home and it works perfectly well.  One or two users is about all that you want to have with SourceSafe, sadly enough, because otherwise you will rapidly discover how much it sucks.

OTOH, Perforce has 2 user editions for free, so that's always a good option that will save you headaches if you want to upgrade, as perforce is quite a nice system.

Thursday, December 26, 2002

Quick question to the PerForce users out there....Is there a decent GUI for it on a Windows platform?  I'm using VSS and looking for a little more from my SC solution.

I usually prefer a command line tool, but I'm currently wrestling with a syntax-overload issue (so many languages, so little time).  A GUI that will get me up to speed quickly would be nice.

Jeff MacDonald
Thursday, December 26, 2002

Jeff -- try QVCS. It has a GUI and a command line, and even has an SCCS provider in the pro version. QVCS has been around for like a decade... it's quite mature. It's also very inexpensive compared to the other guys.

Troy King
Thursday, December 26, 2002

For a one man on windows I use winCVS. If the team gets a little bigger then switch CVS to a unix box as a server. Bigger still then buy something because CVS does have draw backs and no CYA via support. I have been using CVS for the past 6 or so years and it has held up. Also, I think a GUI or web view of the repository is good so others can critique even though the criticisim is usually useless.

Thursday, December 26, 2002

I think version control is essential, it's ingrained in me now to use it for all development, single developer or multi developer. Put your VSS database on another drive/server to your development box and sleep well at night, knowing that it's all backed up.

Friday, December 27, 2002

Wow. I didn't expect so many replies, thanks everyone! To sum things up, a version control system will be helpful even for a one-man shop.

But what version control policy would you recommend? That is, how often should I check in and check out files, how to handle interlinked files, when to branch etc.

My old folder copying system was quite simple:

1. I always "checked in" the ENTIRE project (copied all its files to the new backup folder) to avoid problems with file dependencies.

2. I always "checked in" the project BEFORE making big changes, for example, rewriting a core function that is used everywhere.

3. I also "checked in" AFTER the changes I made were tested.

4. And finally, I "checked in" MILESTONES, for example "Copy 16 -- Alpha version for approval by the boss".

What policy would you recommend?

Vladimir Golovin
Friday, December 27, 2002

You check in for each discrete piece of work (a new function, a bug fix, a successful refactoring -- can be more than 1 file).  If you do continuus integration, you'll do it after and only after you made locally a build and tested the change, and you check in the unit test at the same time!

You label your tree for each major step (alpha, beta, ... 1.0, 1.1) and if necessary you branch out (eg: patch for 1.0 when 2.0 is already underway)

That is simple and it works for me.

Robert Chevallier
Friday, December 27, 2002

I never used a versioning system before I came here and found out that I'm sloppy.

Anyway, after looking around, I decided on Perforce because it's 2 user version is free, it's got a nice GUI, the setup took about 5 minutes, and it took me all of 30 minutes to figure out the basics of it.

Also, I've read that the general concensus is that CVS sucks for Windows and that it's a pain to setup.  I havent' tried all of the Windows CVS solutions mentioned here, but after trying Perforce one time and seeing how easy it is, I don't feel like going back to Google to search for the latest hack to get CVS running on Windows, I just want something that works.

Perforce just worked for me with the least amount of hassle.

Friday, December 27, 2002

There are two ways to setup CVS on Windows, one IS a pain in the ass (the CVSNT server) and the other (using the filesystem) is simple and most appropriate to the one man project you are talking about.  It will even scale to a few people if you put the cvs files on a shared drive.

Get the CVS command-line exe from

Create the file based repository:
cvs -d /some/dir/or/another init

Create your project within the repository:
cvs -d /some/dir/or/another import -m "A description" projectDirName yourName projectName

From then on in manipulate it with the command-line tool or GUI of your choice (WinCVS works best for me).

Get the CVS manual at and refer to sections 2.6 and 3.1.1 for more info on the steps above.

Ken Klose
Friday, December 27, 2002

Nobdoy mentioned StarTeam...looks strange.
We have evaluated CVS and VSS, but StarTeam is by far the best, in my opinion.

Friday, December 27, 2002

Here is the problem with StarTeam:
$2,499 for the server
$799 per user
18% per year for support

For a very small shop like ours (2 developers), we can't swing $4,100. Not when we get VSS as part of MSDN.

StarTeam is the best product I've seen. But until they offer a low-price entry for 5 users or less, I can't use them.

Friday, December 27, 2002

What is hard to set up about CVSNT? As mentioned above, I'm using it. I don't remember there being anything hard about setting it up, though the installer UI wasn't particularly good. (Same installer server and client.) Am I missing something?

Also can anyone compare wincvs to tortoisecvs, in terms of how you actually use them? I really like having explorer integration and haven't needed any sophisticated management yet. (It is after all a one or two person project right now; in the future i'll probably want wincvs.)

As for checking in, since it's just me and I haven't hit a stable release point, I check in whenever I have reached a good 'stopping point', typically a feature working, even if it's buggy. I try never to break my own build. I also build on two different platforms, so whenever I switch platforms I check everything in. With multiple people, the rules become different; in fact I'll contradict what I said elsewhere about the foolishness of a branch per developer if a developer likes checking in all the time like I am right now. But on a more mature product, you don't need to check in nearly as often.

Sunday, December 29, 2002

Well, I was just wondering why I`ve never seen StarTeam users on this forum. Now I know why:)
I know about the price so I wasn`t trying to recommend ST for one-man project.

Sunday, December 29, 2002

Yes Slava, I heard that StarTeam is good, but I'm not that rich yet :-)

Vladimir Golovin
Monday, December 30, 2002

Well, actually our STeam license was a Christmas gift from our client:)
No, kiddin`, I`m serious:)

Monday, December 30, 2002

I meant it is realy story, not a joke,  "," in my previous message is a mistake

Monday, December 30, 2002

Could you send me that client? ;)

Monday, December 30, 2002

*  Recent Topics

*  Fog Creek Home