CVS compared with Team Foundation Version Control


In the Team Foundation forum a question was asked regarding CVS compared to Team Foundation Version Control.  Here's what I wrote.

Of course, Team Foundation is much more than version control since we have integrated work item tracking, reporting, etc.

I'm biased, of course, and I'm probably leaving stuff out.  I've used CVS in the past, but I wasn't exactly a power user.  Okay, here goes.

TFS has atomic checkins.  When you check in, it all succeeds or fails.  No changes are committed unless the whole thing succeeds.  CVS does not have this.

TFS has shelving, and CVS does not.  Shelving is a great way to juggle sets of changes as well as backup changes without checking them in.

TFS has a SQL database for the server, and CVS does not.  This means that adminstering it uses the same tools famililar to database admins (in beta 2, there is ADAM data not in SQL, but ADAM has been removed -- ignore this comment if it doesn't mean anything to you).

CVS and TFS both support parallel development.  Everyone checks out and modifies files and resolves conflicts before checking in.  There's no need to grab an exclusive lock.

CVS does a better job with "offline" mode than TFS in version 1.  It's inherent to CVS because you just modify files and then sync up with the repository before checking in.  When you pend an edit in TFS, you must be able to talk to the server to do it.  We'll be doing a lot more for offline support in the next version.

TFS branches in path space, which means that branch is a lot like copy.  CVS branches are different.  Branches in TFS can have different permissions (main vs. release branches).

TFS has checkin policies, and CVS does not.

TFS supports rename/move, but CVS does not.

The TFS command line, h.exe, has really nice dialogs for command like checkin, shelve, and resolving conflicts (there's also a /noprompt option to suppress dialogs).  CVS doesn't have that.

TFS comes with a full GUI, either VS 2005 or the Team Foundation Client (to be renamed Team Explorer).  CVS does not have a GUI itself, though there are several available.

TFS uses its SQL server for history queries.  CVS doesn't have that support.

TFS uses SOAP over HTTP (or HTTPS) to communicate with the server.  You don't need to open other ports or tunnel through ssh for remote access as you would for CVS.

TFS stores files compressed as reverse deltas (diffs from one version to the next).  CVS can't do that.

CVS and TFS both have branch and merge capabilities, but the changesets used by TFS make it easier to manage.

Comments (15)

  1. RichB says:

    Since many open source projects have moved from CVS to Subversion (and many more will when SourceForge finally release their svn functionality), how does TFS compare to Subversion?

    From your list above, the only thing that Subversion doesn’t do is "shelving". And I’d argue that Subversion WebDAV is a better use of XML for communication than SOAP. In addition, subversion has Unix clients provided by the original author, not by third parties (who are more likely to make implementation mistakes).

    You comment that TFS is much more than version control (work item tracking, etc). If you were going to make that comparison with Subversion then you need to throw Trac into the mix. (Hint: don’t try and install Trac on Windows – it’s painful. Use a Linux package manager to have a play)

  2. RichB says:

    Regarding what I send about SOAP vs WebDAV, Subversion has this to say:

    "In informal tests, we’ve had success reading and writing to Subversion repositories via Windows Web Folders"

    Try doing that with TFS!

    Subversion now supports cross-platform file system versioning for users who have no idea what a source control system is :-)

  3. James says:

    Would you be able to do one of these comparing TFS to MKS SI?

  4. Visual Studio Team System

    Bill Sheldon from InterKnowlogy has an item in the June 3rd edition of…

  5. buckh says:

    I’m not familiar with MKS, though I’ve heard of it.

  6. Ove Lartelius says:

    I would like to know if TFS will have branche history support?

  7. buckh says:

    Ove, TFS does indeed track branch and merge history. For branch history, you can use the "branches" command from the command line or see it in the properties dialog in Source Control Explorer inside of Visual Studio. For merge history, there is the "merges" command. Use "merge /candidates" to see what needs to be merged (this is also shown in the merge wizard available in Source Control Explorer).

  8. Atul Thakor says:

    I’d like to throw another arguement in here following on from what Rich B said:

    "From your list above, the only thing that Subversion doesn’t do is "shelving". And I’d argue that Subversion WebDAV is a better use of XML for communication than SOAP. In addition, subversion has Unix clients provided by the original author, not by third parties (who are more likely to make implementation mistakes)."

    Unix and Subversion are both Free. Could the bonus of shelving really justify the cost of using TSF.

  9. Jason says:

    Atul, I’m sure if you are going to use Visual Studio 2005 TFS has lot’s of justified benefits over other free solutions.

  10. CVS compared with Team Foundation Version Control

  11. I am cleaning out my blog folder after getting quite behind in all the things I have been wanting to

Skip to main content