This is where I’ll be compiling frequently asked questions (FAQs) regarding the many aspects of Visual Studio Team Foundation Server (TFS). If you’d like to suggest a FAQ (answers are appreciated too!) please add a comment to this article or email me directly at jimlamb@microsoft.com.

FAQ Categories

Administration

How do I get started with installing and administering Team Foundation Server?

See the quick start article on MSDN: Installation and Administration of Team Foundation Server.

Should I create a team project for each application or for each release?

Here are some pros and cons for each approach:

Team Project per Application
Pros Cons
  • One Sharepoint per Application
  • All work items under 1 Team Project. Must use a Work Item field to filter work item per releases
  • Reporting – have to change reporting criteria if want to report on a different release
  • Permissions assigned to application level, not per release
  • Recreate Work Items and Queries for each release (workaround, use a Excel sheet to facilitate the upload)
  • List of Team Queries will begin growing as we will create new Queries for each releases
  • Manual Management of Sharepoint per release (create new subfolders for each release to contain documentation templates for each release)
  • Manual Creation of Report per release
  • Manual Branching for each release
Team Project per Release
Pros Cons
  • Create Work Item automatically
  • Create Work Item Queries automatically
  • Create Reporting for each release automatically
  • Source Code branching part of Team Project creation wizard
  • 1 Sharepoint per Release (no common Sharepoint for all application documentation)
  • Must create a Team Project to assign Work Items to a future release (hard to manage WI across releases since you have copy the WI from team project to another
  • Where do you create Application-wide reporting?

What is the procedure to backup/restore Team Foundation Server?

See Buck Hodges’ MSDN forum post: Backup and restore procedures for TFS.

When I need to add a user to Team Foundation Server, is there an easy way to synchronize permissions with Windows SharePoint Services (WSS) and SQL Reporting Services?

The Developer Division After-market Community Solutions team has released the first beta of the TFS Administration Tool.

The TFS Administration Tool allows a TFS administrator to quickly add users to all three platforms utilized by TFS: TFS, Sharepoint, and SQL RS, all through one common interface. The tool also allows administrators to change the current permissions on any of the three tiers, identify any errors, and view all of the users and their permission sets across TFS, Sharepoint, and SQL RS.

How can I estimate the amount of disk space necessary for my projects?

See Buck Hodges’ blog post: Determining the amount of space required to store files and work items.

Version Control

Can I use Team Foundation’s source code control with Visual Studio 6.0 and Visual Studio .NET 2003 clients?

Yes. You can use the Visual Studio Team Foundation Server MSSCCI Provider Beta 2, but be sure to disable strong name validation.

What command-line interfaces are available for version control in Team Foundation Server?

See Vertigo Software’s blog post: TFS Source Control using the Console.

Can we disable the “Override CheckIn Policy Failure” checkbox? Can that be customized based on User Login, Policy Type of File type?

No. We get a lot of requests for this but our contention is that the person defining the policy can’t envision the situations that will arise where policy will need to be overridden. Thus, we designed it to be fully auditable by including policy compliance data in the changeset details and in the checkin mail that is delivered, but left it up to the developer to determine whether they have a good reason for overriding.

What happens when I check in an update to a file in version control?

TFS uses the reverse delta model as most version control systems do. However, there’s a few notable things that TFS does. First the creation of the reverse deltas is done asynchronously as a background task. Initially the new copy is uploaded and saved. Sometime later (usually not very long), a background job will run and convert the older version from a full copy to a reverse delta (assuming the delta is actually smaller than the original – usually, but not always the case).

Because recreation of old versions can be time consuming (especially if you have to apply many reverse deltas), TFS stores the copies of the most recently used files in a cache on the application tier (AT) machine. This mostly eliminates the performance difference between accessing the most recent version vs. older versions.

Note: The reverse delta mechanism works for text and binary.

What are the different events available in the event model and is there any documentation on them?

There is really only one SCC event and that is the one that is raised on checkin. Subscription is via the general event model that is discussed in the extensibility kit.

How will deleted branches/files be handled in a merging scenario? E.g. If files/folders in a Dev branch are deleted, how will merge into a Test Branch be handled?

A file or folder deleted in the source branch will be deleted in the target branch as part of the merge. In this scenario, the items that were deleted in the Dev branch will get deleted in the Test branch.

Are Deletes physical or logical? Can accidental deletes be recovered?

Deletes are fully recoverable with the “undelete” operation. You wouldn’t want to do a SQL restore because that would roll back every change to the TFS in the time since the file was deleted.

Can different CheckIn Policies be applied on different branches? E.g. Can they have QA specific policies applied on CheckIn in a QA branch?

No.

Can an Administrator specify exclusive checkout on single files?

An administrator can specify exclusive checkout on team projects or file types. If either is set for exclusive checkout, then exclusive checkout will apply. For this question, the answer is “no” but if they have a general class of files (i.e. images) with known extensions (.bmp, .gif, .jpg) then they can configure them for exclusive checkout.

Why doesn’t source control detect that I have deleted a file/folder on my local disk?

The main scenario here is deleting a file (by mistake or intentionally) outside of Team Foundation and then trying the get that file back from source control. If the file version has not changed the server thinks the user already has the file and does not copy it over. This is because the server keeps a list of files that the user already has and when activities are made outside of source control this list becomes out of date. Team Foundation Version Control does have a force get option which will provide the functionality needed to obtain the desired version but it is currently partially hidden under the Get Specific Version Dialog window as a check box item.

How do I redisplay source control explorer?

Selecting View > Other Windows > Source Control Explorer will display the Source Control Explorer window within the IDE.

Can I compare directory structures?

No.

How can I add non-solution items to source control?

This can be achieved by either clicking the Add icon or by going to File > Source Control and selecting the Add To Source Control menu item.

Can we configure SCC to not check-in the binary files? Where are such configurations done?

Team Foundation Version Control provides a way to limit check-ins by setting up check-in policies that are evaluated before a check-in can take effect. The easiest way to do this is by authoring a policy that checks if the user is trying to check-in a binary file from a given folder structure and reject or accept it in accordance.

We are assuming that “Project Administrators” of team project are also SCC administrators. Is that correct?

Yes, for the source files under that team project top level folder.

When a user “edits” a file in a “source controlled” project, it gets checked out automatically. Is this configurable? Can we change this behavior?

If a file is under source control it inherently means that is read only and the only way to save an edit is to checkout or change the file properties back to write. If editing the file is all that is desired then: Tools > Options > Source Control > Environment provides an option where a user can change the settings to not checkout files automatically on edit.

How can I Remap the Root Directory or Workspace?

The mapping of the repository to a local folder is done at a workspace level. Due to this the way to remap a root directory or Team Project is to edit the workspace. You can edit the workspace by selecting File > Source Control > Workspaces and then selecting the Edit button. Once there, change the Local folder location that is mapped to the source control folder.

What is substituting Sharing as a feature?

Sharing, as referenced in this question, is the concept of creating a file/folder that mirrors the contents of another file/folder which is the source. In Team Foundation we recommend users to implement sharing by:
  • Setting up a new branch and having a schedule event that does a Get Latest every n number of minutes or
  • Utilizing the Server proxy to mirror the repository

How to promote files/release using Team Foundation Version Control. Can I use sharing and pinning?

Team Foundation Version control does not support the promotion model using sharing and pinning. Instead, we use branching and merging as the features that drive our promotion modeling. For a more detailed visual explanation please see the TechEd 2005 presentation made by Doug Neumann.

Is Pinning supported?

No. The same functionality can be achieved by using either labels or branches in Team Foundation Version Control.

How does “baseless merging” work?

Traditional 3-way merges work the following way:
  • Identify a base version (automatically by leveraging merge history)
  • Compute a patch that if applied to the base will provide the derived file1 (left)
  • Compute a patch that if applied to the base will provide the derived file2 (right)
  • Merge both patches into the base version and create an output which is a merge that has both changes from file1 (left) and file2 (right)

A baseless merge scenario is created when the application is unable to identify a base version and requires the user to define one. Team Foundation relies on merge history to identify a base version but when branches do not have a direct relationship (meaning they are not branched from each other or in other terms are not parent-child) this history does not exist. At this point the application is not able to establish a base version and a baseless merge is the only way to merge changes.

Baseless merge in Team Foundation Version Control works the following way:
  • User provides a range of changesets from the source branch he/she would like to merge this is then considered both the base and file1 (left)
  • User provides the target branch where file2 (right) is located
  • The application computes a patch so when applied to the specified base creates an output file that contains all the changes from file1 (left) and file2 (right)

One note to highlight is that when using baseless merge no relationship between these files or branches is kept.

How advanced is Team Foundation’s source code control solution? What does it support? What does it not support?

Team Foundation is being built as the future source control tool for Microsoft and consequently is advanced enough to support the source control needs of a very large software development organization. It supports parallel development through branching and merging and has a special focus on making these operations easy and flexible. As for what it does not support, pinning and sharing are two examples. We performed a detailed analysis of these features and found that in every identified scenario, there were other configuration management practices that better accomplished the user’s goals.

Can I use Rational ClearCase or ClearQuest in place of Team Foundation’s change management features?

You certainly can use another source control or work item tracking systems in place of Team Foundation’s corresponding features. In some cases, you may find that the integration between a third party tool and the other Team Foundation features is not as rich as with a full Team Foundation environment. We are actively encouraging other tool vendors to leverage the integration and extensibility features of Team Foundation to bridge this gap.

How do I migrate my source code from Visual SourceSafe to Team Foundation Server?

The Team Foundation Visual SourceSafe converter tool transfers files, folders, version history, and user information from a Visual SourceSafe database to Team Foundation source control. Read more.

How do I migrate my source code from CVS or Subversion to Team Foundation Server?

While there is no converter available from Microsoft that will migrate source code from CVS or Subversion, ComponentSoftware (not affiliated with Microsoft) is offering CS-Converter for evaluation. From their press release:

CS-Converter is a powerful and reliable conversion tool, used to migrate from various legacy version control systems (such as RCS, CVS, Subversion and Visual SourceSafe) to Microsoft Team Foundation Version Control (TFVC) system.

Build Automation

How can I use VSTS to build projects developed in Visual Studio .NET 2003 on version 1.1 of the .NET framework?

See Nagaraju Palla’s blog entry: Building binaries targeting .NET 1.1 and .NET 1.0 in TeamBuild.

Alternatively, you can try MSBee, an addition to MSBuild that allows developers to build managed applications in Visual Studio 2005 that target .NET 1.1, which is supported on the Developer Aftermarket Solutions and Powertoys forum.

Does Team Foundation support Continuous Integration?

Yes. See the MSDN article Continuous Integration using Team Foundation Build.

Work Item Tracking

How do I customize work item types?

See the Team Foundation's WebLog post: Customizing Work Item Types.

How do I customize process templates?

See the Team Foundation's WebLog post: Customizing Process Templates. Also, check out the Process Template Editor from the VSTS Customization Workspace.

How can I group Team Queries together (in my own folder structure under “Team Queries”) to avoid have my list of Team Queries grow too long?

Unfortunately there is no way to organize queries into a folder structure in V1. The closest thing you can do is copy them into your favorites folders and organize them there.

How can I send a query in “My Queries” to someone else on the team?

You can send a query by copying it to the clipboard and pasting it into email. The recipient can drag it into the document well and then use save as to save it either as a public or private query.

Can I use TFS to capture "yesterday's weather" to help improve our estimation process?

Mitch Denny has an informative two-part blog post on this subject. See Yesterday's Weather for Team Foundation Server Part 1 and Part 2.

How can I migrate work items (bugs, etc.) from ClearQuest to Team Foundation Server?

See the MSDN article: Walkthrough: Migrating ClearQuest Work Items to Team Foundation.

Is it possible to integrate Team Foundation with Microsoft Project Server?

See Rob Caron’s blog post: Project Server – Team Foundation Server Integration.

Process and Methodology

I deal with a lot of “no process” shops. Is Visual Studio Team System compatible with organizations that do not follow any formal process?

You can configure Visual Studio Team System to work in an ad hoc “low process” fashion.

What processes are included with Team Foundation?

What processes are available from third-parties for Team Foundation?

Reporting

How can I troubleshoot problems with my Team Foundation data warehouse?

See Bryan MacFarlane’s MSDN forum post: Warehouse Troubleshooting Guide.

Performance and Scalability

Can Team Foundation Server scale to enterprise level?

Our goal is to easily support up to 500 users with a single installation of Team Foundation Server. We are actively using (‘dogfooding’ in Microsoft-speak) Team Foundation Server in our own development teams. Please see John Lawrence’s blog post: Latest Team System Dogfood Statistcs for details about this effort.

How can I improve the performance of the source code control command-line tool?

See Buck Hodges’ blog post: How to improve command line performance.

Does Visual Studio 2005 Team System support 64-bit Windows?

You can use Visual Studio 2005 to compile your application and specify that it should run on a 64-bit operating system either as a native application or under WOW64; however, Visual Studio 2005 itself (including Team Suite and the role-based editions) is a 32-bit application and when installed on a 64-bit Windows operating system will run under WOW64. Likewise, Team Foundation Build is a 32-bit application and when installed on a 64-bit Windows operating system will run under WOW64. For more information, see Visual Studio Development Environment 64–Bit Support and Visual Studio Team System 64-Bit Support.

Is this the tool that Microsoft uses internally?

Many of the tools in Visual Studio 2005 Team System are tools that Microsoft has used internally for years, such as profiling, static analysis and work item tracking. Microsoft already has plans to use Visual Studio 2005 Team System for product development.

Is Team Foundation more useful for smaller teams (less than 10 involved) or is it geared towards larger organizations?

We do not think about the size of teams as much as the level of integration necessary. Some small teams need process methodology integration, issue tracking, integrated source code control and policy management and they should use Team Foundation. Conversely, if they are only looking for source code control, the forthcoming release of Visual SourceSafe has numerous improvements that should satisfy their needs.

Does Visual Studio 2005 Team System work for geographically distributed teams?

One of our design goals was to ensure that distributed teams can access Team System products.

Licensing

Can I use Team Foundation Server alone without buying Visual Studio Team System?

Yes. In order to do this you will need to buy Visual Studio Team Foundation Server and a Client Access License for proper communication with the server. Team Explorer, which is included with Team Foundation Server, is a stand alone client that uses the Visual Studio 2005 shell providing a UI for source control, work item tracking and all the other features.

For more information on licensing Visual Studio Team System (including Team Foundation Server) see the Team System Licensing White Paper.

Interoperability and Extensibility

What add-ons, utilities and samples are available for Team Foundation Server?

See the Visual Studio Developer Center’s Customize and Extend Visual Studio page.

Team Foundation Server

Team Foundation Client

Do you support cross-platform design issues?

Platform integration is achieved through Web services and supported by Team System. Team Foundation Core Services enable third parties to extend Team System.

How extensible will your platform be?

Visual Studio 2005 Team System enables partners and customers to extend Team System with their own internal or commercial tools and process frameworks. As the platform on which Team System is built, Team Foundation Core Services enable third parties to extend Team System and to share reporting, eventing, groups and permissions, linking, administration and navigation capabilities. In addition to the Team Foundation Core Services integration services, each of the tools in Visual Studio 2005 Team System may be extended through its own APIs or services.

Online Resources

Forums

Web Sites

Blogs

Videos

Books


Software Engineering with Microsoft Visual Studio Team System
by Sam Guckenheimer


Pro Visual Studio 2005 Team System by Jeff Levinson, David Nelson


Professional Visual Studio 2005 Team System by Jean-Luc David, et al


Working with Microsoft Visual Studio 2005 Team System by Richard Hundhausen