Fog Creek Software
Discussion Board

What source control do you use/

I'm curious - what're people using for source control on their projects?

At work, we use PVCS, which, IMO, is a slow, awkward, badly designed, *horrible* piece of software...

I've recently starting using Perforce at home, which is pretty nice, although it would be nicer if it integrated into VS.NET a bit better.  Has anyone got any other recommendations for home use? 
Given it's a personal project, I obviously have no need for multi user stuff, setting privileges etc - I just want something that allows me to store version histories, and roll back to previous versions when I discover that my latest optimization is a total failure... :)

Tuesday, October 07, 2003

Oracle SCM at work, Visual SourceSafe at home, although I only use that for version controlling my CityDesk file.

John Topley (
Tuesday, October 07, 2003


Tuesday, October 07, 2003

CVS, both at home and at work.

Jilles Oldenbeuving
Tuesday, October 07, 2003


Tuesday, October 07, 2003

CVS + Tortoise

Brad Wilson (
Tuesday, October 07, 2003


Gubmint Worker
Tuesday, October 07, 2003


Len Holgate (
Tuesday, October 07, 2003

CVS at work, home, and for open source projects.

Chris Winters
Tuesday, October 07, 2003

Visual SourceSafe at work, Subversion + TortoiseSVN at home

Wade Winningham
Tuesday, October 07, 2003

TLIB from

Used it for years.  It is the exact opposite of PVCS.

Tuesday, October 07, 2003

Starteam at work,
CVS at home

Tuesday, October 07, 2003


Tuesday, October 07, 2003

Perforce at work, nothing at home (my bad :) ).  I don't have anything big enough going on at home which I know is a bad excuse.

Tuesday, October 07, 2003

ClearCase at work, CVS at home.

Tuesday, October 07, 2003

After 10 hrs of work are we supposed to do programming at home too? I think that is the reason I don’t get promoted.

19th floor
Tuesday, October 07, 2003

After 10 hours of paid playtime you can still play at home ;-)

John Ridout
Tuesday, October 07, 2003

CVS with Tortoise, but looking at SubVersion.

Happy to be working
Tuesday, October 07, 2003

GNU arch.  It's the future.

Tuesday, October 07, 2003

Tortoise works for me!

Tuesday, October 07, 2003

Code Co-op - works great for small widely dispersed teams

Tuesday, October 07, 2003

Ok.. for those of you that use CVS and Tortiose.. anyone have some good documentation on how to setup CVSNT on one machine.. and use Tortiose on another? I've searched and searched.. and haven't found anything.

Tuesday, October 07, 2003

What specifically do you need help with? The CVSNT site has an excellent one page installation guide. Without any CVS admin experience, I had it running in about 10 minutes.

Installing Tortoise on the client was similarly simple. Install it, reboot, then create a folder to hold source. Right click, choose CVS Check Out, fill out the appropriate server information and away you go.

Brad Wilson (
Tuesday, October 07, 2003

For the people using no source control at home, you should take a look at Tortoise.  It works great as a client to connect to your CVS server, but it also works great for local source control without a server.  Just select "locally mounted folder" for the protocol when you create a new module.

Tuesday, October 07, 2003

WinZip.  ;>  Yeah, I know, I know.  I've been meaning to install CVSNT/Tortoise, but had to add an NTFS partition first.

Sam Livingston-Gray
Tuesday, October 07, 2003

It was said previously in this thread and others but people keep missing this:


It can set up a local repository itself. You only need CVSNT if you use more than one machine (and even then, you can do without a CVSNT, but that's trickier to set up).

Tortoise will happily set up a local repository for you. Just ask it to.

Ori Berger
Tuesday, October 07, 2003


Tuesday, October 07, 2003

I use Team coherence and I absolutely love it!


Tuesday, October 07, 2003

NOTE: Tortoise is Windows-only.

I don't use source-code control; I use backups.  There's only one programming pair working on the code at any given time, so checking code in/out isn't as useful as it is on other projects.

The Pedant, Brent P. Newhall
Tuesday, October 07, 2003

No one who reads this forum uses Fog Bugz?  Why not?  cost? functionality?

My company uses VSS because it's free with MSDN and most projects are of a small enough size that we haven't run into any scaling problems.

Tuesday, October 07, 2003

At home, QVCS Pro:

Troy King
Tuesday, October 07, 2003

Chris: FogBugz is a bugtracking tool.  We're talking about source control tools.

Tuesday, October 07, 2003

"No one who reads this forum uses Fog Bugz?  Why not?  cost? functionality?"

Because the question was about source code control, and FogBugz is a bug tracker, not a source code control system.

And for my answer, CVS + Tortise + WinCVS when needed. I find WinCVS to be easier when doing the initial import for some reason.

Chris Tavares
Tuesday, October 07, 2003

I'll second the CVS/WinCVS combo.  CVS is honestly a pain in the posterior at times, but WinCVS makes it very easy to use.  I find that remembering to open the manual for CVS makes it a lot easier to use.

For me, even though I'm the only one programming, CVS is a great way to synchronize code between multiple machines.  It's also a great help in maintaining and deploying web sites.  Get it looking good on my development machine, commit the changes, then update the production server.

Clay Dowling
Tuesday, October 07, 2003

I have a CVSNT question.  It appears that you must disable "Enable file system real time protection".  Is that correct?  That's the only reason I went with VSS.  My boss would flip if I had to disable real time protection.

Tuesday, October 07, 2003

As stupid as this sounds, how does people do RC before such software existed? Especially distributed RC.

For example, let say in WWII the americans are trying to steal little itsy bits of pieces of secret device's blue plan. So somehow you have all these spies reporting in views of the said plan. Sometimes they describe the plan or the design wrong so the engineers back home have to "roll back" to the last buildable machine?

Extremely stupid example.. but minus the war.. how would you do this?

Li-fan Chen
Tuesday, October 07, 2003

To Brent P. Newhall: source control is useful even when you are the only developer in your group. You should give it a try.

Leonardo Herrera
Tuesday, October 07, 2003

CVSNT and Norton Antivirus do not coexist happily. That's a problem with Norton, not with CVSNT. While it is possible to get around this behaviour, the CVSNT developer, Tony Hoyle, is reluctant to fix a perfectly good implementation because of a braindead virus scanner, no matter how popular.

You have two ways to solve this with CVSNT:

1. Disable real time file scanning, but only for the CVS respository; Make it non-sharable, non accessible to the network, and you're mostly ok.

2. Contribute a CVSNT patch to work around the Norton problem. I don't think Tony will reject it - he just doesn't have an itch to scratch with this himself. (Perhaps you can pay him to do that - if you are willing to go that way, the best thing would be to contact him).

That said, please be aware that Norton causes problems for many other programs, and development tools seem to suffer the most.

If any of you have tried to save a file in visual studio, to be greated with a dialog that wants you to select a different name but will happily go with the same name, the cause is Norton antivirus. (Or rather, it's the extremely non-intuitive and undocumented nature of deleting files on a Windows system. No, Virginia, you can't tell that a file delete has been successful, other than polling the directory to see it isn't there (which is race condition prone); A successful return from the remove() or DeleteFile() call doesn't mean the file was deleted.

Ori Berger
Tuesday, October 07, 2003

"to be greated" = "only to be greeted"

Ori Berger
Tuesday, October 07, 2003

Yet another CVS user...

I use Cygwin on my Windows machines, and SSH to a Linux repository.  I use CVS on the command line, rather than using Tortoise, since I also use CVS from the Linux machines.  Might as well learn only one set of commands...

Phillip J. Eby
Tuesday, October 07, 2003

I've used Visual Source Safe, CVS and Aegis.

Everyone who has a MSDN subscription seems to use Source Safe. CVS is well and good, although my favourite of the three was Aegis [this should get Philo's attention - counter culture etc].

What's nice about Aegis is that it supports change sets. I hear that Subversion supports change sets, but then I hear you have to check out whole directories. Aegis doesn't work like that - you check out files into your change and later commit your entire change (i.e. all files related to that change). This avoids the situation that can and does occur in Source Safe and CVS were developers don't check in all files related to a change. Rolling back a change is more sensible than rolling back particular files too.

I might not understand how Subversion works properly, but seeing as everyone keeps talking about checking out directories I'm a little confused about how great it could be.

Walter Rumsby
Tuesday, October 07, 2003

Note that the local repository feature is a feature of CVS. TortoiseCVS just drives CVS.

Philip-- have you tried TortoiseCVS? It doesn't have any commands which are different than CVS, they're just extensions to the explorer file view, which for many (not all) operations is much more convenient than the command line.

Tuesday, October 07, 2003

I use Visual SourceSafe at home.  I know there are horror stories out there about it but I've never had a single issue with it.

I'm in the process of trying out Perforce (it's free for two users) but so far haven't seen any compelling reason to go with it because (a) it seems overly complicated for single user purposes, (b) it crashes when I double click DSW files (VSS has *never* crashed on me), and (c) the process of converting VSS data to Perforce was painful and undocumented (in other words, I don't particularly trust it). 

Tuesday, October 07, 2003

I use CVS. Three separate repositories; one for purely in-house use, and two that are shared with two different groups of users out in the wild.

We run FogBUGZ which integrates beautifully with CVS; FogBUGZ is told about each checkin against each case as we work on it.

We also run WebCVS so we can explore the CVS repository via  web browser. This integrates with FogBUGZ too, so from a particular FogBUGZ case you can dive into the repository and explore exactly what changed.

It all integrates really well.

Andrew Lighten
Tuesday, October 07, 2003


Thanks for the info. 

"1. Disable real time file scanning, but only for the CVS respository; Make it non-sharable, non accessible to the network, and you're mostly ok."  But if my repository is not shared, how to I post to the production servers?

I'm only a single developer here, but I am looking for a version control/deployment solution so that production, development and test servers always jibe.  I would like to do this without manually having to copy changes to Server A, B and C.  Sometimes I'll forget one and it REALLY jacks thing up.

Thanks again.

Tuesday, October 07, 2003

'not shared' meaning not shared with SMB (windows file sharing).

CVS (and other good source control systems) use their own protocol to talk to the server, ensuring the state of the repository is always good.

some bad systems (vss i think is one) just write to the filesystem and hope the OS gets the timing right and no other people come along and try to edit files directly.

subversion may be an interesting case, since they're apparently using WebDAV or some variant.

Tuesday, October 07, 2003

BTW, with so many people using CVS, makes you wonder why there are also so many alternatives.

Besides the annoying CVS/ sub-directory in each directory under source control, the fact that CVS is apparently not atomic (a big issue over WAN links, I agree)... what are issues with CVS that would drive people to choose another SCM, either open-source or commercial?

Frederic Faure
Tuesday, October 07, 2003

CVSNT is atomic. They said it couldn't be done, and the author ignored them and did it anyway.

There's a lot to be said for not listening to others tell you what's impossible. :)

Brad Wilson (
Tuesday, October 07, 2003

If you have a Mac, get CVL.

Jim Rankin
Tuesday, October 07, 2003

As opposed to SourceSafe which relies on having the file system of the repository accessible, CVS can access the repository in many ways.

The SourceSafe way of accessing files directly is supported. However, there is also a network protocol called "pserver", which lets you communicate with the CVS server through TCP/IP (port 2401 by default)., and supports authentication etc. (and it also has other variations on this protocol, supporting various encryption and authentication methods).

If you have a dedicated CVSNT server, you can (and should) lock down all incoming TCP traffic except port 2401. You can do this with a software firewall (I recommend Kerio Personal Firewall if you don't already have anything usable), or even with a plain vanilla NT4/2000/XP/2003, through the network settings. It's a little known feature, but the Win32 systems can, and always could, filter incoming traffic; There's no flashy wizard to do that before XP/2003, though.

I'm not aware of any virus that can propagate through the pserver protocol, and I doubt one will ever be written for Windows (I'd guess 99% of the CVS servers in the world run on Unix).

All said and done, I wouldn't go through all this hassle - I'd just create a repository which is inaccessible to everyone but yourself (or a special CVS user you set up), not even the system administrator; I would make sure that no network share can reach that repository, including removal of the C$ default shares and anonymous sessions. Then I would disable Norton's real time scanning for the repository, but schedule a scan to run every day at a time when no one is going to commit. This provides a level of protection almost as high as having the real time scanning on for the system including the repository. Which isn't _that_ high in the first place, but ....

Ori Berger
Tuesday, October 07, 2003

CVS has always been atomic at the file level - even in it's first, 1986 version (or so I've heard - I've never actually used it).

What CVSNT added recently is transaction-level atomic commits; If you commit a set of files, either the commits to all files succeed, or none does.

And be aware that this is actually a non problem - while every CVS alternative that has atomic transaction-level commit tries to scare you away from CVS by pointing to this problem, I've yet to meet, see or hear a report from a CVS project in which this was the case. It's probable that this has happened, but it is immediately evident with overwhelming probability and easily fixable by the user. If your users are competent, this will probably mean that the repository will not be in a consistent* state for 10 minutes or so. This is NOT a problem in real life.

consistent* - in the sense that no developer had this specific repository state  on his machine at any time. In contrast, after a successful transactional commit the repository state is the same as it was on the committer's machine.

All that said, CVSNT *does* support atomic transactional commits these days, on both Windows and Unix.

Ori Berger
Tuesday, October 07, 2003

Thx Ori for the info on CVSNT. Actually, support for atomic commits is important for teams working over WAN links.

So... what are those CVS peeves that would have us look elsewhere? :-)

Frederic Faure
Tuesday, October 07, 2003

"what are issues with CVS that would drive people to choose another SCM, either open-source or commercial? "

Where to begin?

1)  branches are expensive, fragile, and semantically braindead.

2) you can't rename a file without losing its history or fiddling with the repository itself, which will likely cause gremlins later on.

3) operations are file-centric, rather than tree-centric.  It is fragile, error-prone, and generally a waste of time to attempt to mark "logical changesets" to a tree, using some kludge like CVS tags, or heuristics on check-in logs and times.

4) since commits are not atomic per tree, it is nearly impossible to revert a "change" as a unitary operation if it crosscuts more than one file.

5) it is not possible to follow development on a branch, versioning your own changes, without write access to that repository.

6) You can't rename a directory without losing ALL of the history of all of the directories and files underneath it.  Or, you can hack the repository, which also has its cons, usually in the form of gremlins later on.

7) You can't version symlinks.

The list goes on.  This is really the kind of thing that you never really realize how truly awful it is until you've had the opportunity to use something better.

Tuesday, October 07, 2003


I agree with your comments on CVS moves/renames.  Not pretty.  When I've absolutely HAD do a CVS move/rename, I've followed the steps given in this Google Groups message ID:

I still use CVS at home, CVS/WinCVS at work.  You've inspired me to go check out GNU arch.

Dave Smith
Tuesday, October 07, 2003

Another vote for CVS/Tortise/WinCVS.  The driving force behind the switch is because CVS is not integrated with VS.NET which is really a PIA.

Jason Watts
Tuesday, October 07, 2003

I use Subversion at home, and for some projects I maintain. I like it a lot.

I also sometimes have to use CVS for other projects I have or take part in, but don't like it as much as Subversion. (Subversion is much nicer).

Shlomi Fish
Tuesday, October 07, 2003

> CVS is not integrated with VS.NET which is really a PIA.

The Zeus SCC-CVS might help with the integration:

This DLL provides a Microsoft SCC interface for the CVS executable which should work with most SCC compliant IDE's.

Tuesday, October 07, 2003

[cvs server]
*password authentication cvs server - linux
-custom python backup script to uniquly backup each checkin each day to different HD at  zero hundred hrs.
-write to zip disk every day
-burn to CD each week

[cvs clients]
*win2k box
-wincvs gui -
*openbsd, linux
-cli cvs

*distributed code development
*with update distributes code b/w machines
*no cost at client or server

*setting it up
*maintaining documentation
-having to write your own HOWTO for
setup as the setup is for a particular
machine/OS installation.
*archane commandline tools on *nix

peter renshaw
Wednesday, October 08, 2003

CVS on MAC with Project Builder Integration and Command line Using Terminal

cocoa developer for mac
Wednesday, October 08, 2003

I installed Tortoise on my work machine, and played around with it a bit.  Didn't see much use for it, really.  But then, something like 99% of all my CVS commands are one of the following:

cvs upd -dPA
cvs diff -u
cvs ci

...and done in the root of the appropriate project directory.  Since I usually have a cygwin window open to run my unit tests, and I run tests before reviewing my diffs and committing, switching to an explorer window to use Tortoise seems like just a waste of time.

Phillip J. Eby
Wednesday, October 08, 2003

Lot's of text files

Thursday, October 09, 2003

*  Recent Topics

*  Fog Creek Home