Team Foundation vs. Visual SourceSafe, Part 1

On a daily basis, I come upon an interesting and often emerging feature difference between Team Foundation source control (aka, Hatteras) and my last product, Visual SourceSafe (aka, VSS). I plan to keep track of these features...where else?...out here in the wild for everyone to read. Por supuesto. Here's my first installment.

Big Freaky Disclaimer   Microsoft Visual Studio 2005 Team Foundation is an orange tree and Microsoft Visual SourceSafe is an apple. They're both sweet but they don't compare. SourceSafe is a standalone source control system for individual developers and small teams. Team Foundation is an integrated work item tracking and source control system for professional development teams of any size. For more information, see The [new] Future of Visual SourceSafe and Microsoft's New Source Code Control Application.

Today's featured difference: Code Churn

A customer asks, “One thing that I am very interested in getting si the # of lines of code added, # of lines of code changed, and the # of lines deleted.  I would be able to slice this by date range, project, by individual, or by groups of individuals.  I don’t know if you can get this out of VSS 6 but will it be available from Team System?”

  • SourceSafe does not have this feature.

  • Visual Studio Team Foudation does have this feature. Doug Neumann, the omniscient (yo, way plugged-in) source control PM for Visual Studio 2005 Team Foundation writes, “The Team System does indeed give you this.  You’ll have code churn information for every checkin in the data warehouse and be able to slice the data as you choose.“

Comments (16)

  1. MichaelM says:


    What I’d really like to see is the ability to highlight a piece of code, and see during what past checkin’s that code has changed (and when it was first introduced, etc).


  2. Hey Michael, that’s a cool feature request. As far as I know, we’re not planning to provide subfile versioning features in the Whidbey release of VSTS 2005.

    However, it’s an interesting enough requirement that I’ve added it to my list of documentation user scenarios. Perhaps we can document how to write a script that achieves the desired result…

    Let’s see. To perform this operation, I think that a user (or script) would need to:

    1)make note of line numbers selected (eg, lines 4,5) — possible via IDE extensibility, I think.

    2)Recursively diff the current workspace version against every verision of the file in the repository that is older than the current workspace version. — This is possible via a simple script that loops through the Team Foundation >>difference /version<< command.

    3)Finally, print out all file versions in which a revision to line 4 or 5 occurred.

    If customers like you squawk enough and the Team Foundation team decides to implement such a feature (and thereby obviate the necessity of a script or help topic:-), we could improve on this solution by implementing a "quick diff", which would recursively diff each version–but only to the last line selected (eg, line 5)–and then jump to the next file version. That would be much more performant.

  3. Paul says:

    I can’t even describe how much I’ve needed this feature. I can often pinpoint the part of the code that is causing a problem, but I need to identify who changed it and why before I go mucking with it. I’d say I have to manually dig through sourcesafe once a week to find out where some part of the code changed. It takes forever!

  4. To grab line numbers of selected lines…

    Dim textDocument as EnvDTE.TextDocument

    Dim textSelection as EnvDTE.TextSelection

    textDocument = DTE.ActiveDocument.Object("TextDocument")

    textSelection = textDocument.Selection

    Then with the textSelection object, you can get the start and end point with the properties Text.Selection.AnchorPoint.Line, TextSelection.AnchorPoint.DisplayColumn, Text.Selection.ActivePoint.Line, and TextSelection.ActivePoint.DisplayColumn.

    Thanks to Craig Skibo for this (

  5. Arild Fines says:

    CVS and Subversion has this feature(although not in the IDE). It is called blame or praise(!) and the output looks like this:

    762 Arild public IWin32Window HostWindow

    762 Arild {

    682 Arild [System.Diagnostics.DebuggerStepThrough]

    377 Arild get

    377 Arild {

    762 Arild return this.hostWindow;

    562 Arild }

    562 Arild }

    It is pretty slow, though.

  6. Buck Hodges says:

    We had discussed this feature, which we had called annotate (blame is pretty negative), but it did not make the cut for version 1.

  7. Nick Barnes says:

    Perforce has it in both command line and GUI clients: p4 annotate. Yes, it is cool.

  8. VSS vs. Team Foundation Version Control | Checkout Behavior

    Team Foundation vs. SourceSafe | Cloaking…

  9. Thanks for the great tips about <a href=""”>" title="cash back credit card">cash back credit card</a> and [URL=]cash back credit card[/URL]

  10. Tissue says:

    Hello, good site and interesting design!

    <a href=" ">tramadol sales</a>
    <a href=" ">xanax sales</a>


Skip to main content