Inside TFS

Team Foundation Version Control - Workspaces

Mickey explains the basics of workspaces in Team Foundation Version Control and how they can help you manage code changes.

When working with Team Foundation Version Control, one of the concepts you need to understand is the workspace. Team Foundation Version Control stores your code, but when you begin to make changes to the code, those changes have to happen on your local machine. The code files need to be checked out from TFS to a local area on your computer. A "workspace" in TFS defines where the code resides locally.

In essence, a workspace is a folder, or multiple folders, mapped to areas in TFS. When code is checked out of TFS, the code is stored locally based off your workspace mappings. When you make changes to your code files, you are making those changes locally, to the files contained in your workspace.

One of the main reasons for workspaces is isolation. It provides a private sandbox where code changes can be made without having to worry if the changes will affect other team members. The changes remain in the local workspace until are checked into TFS.

TFS was designed to allow for one or more workspaces on the same machine. A single workspace can be created that contains multiple team projects and their code, or a more targeted workspace that only contains a particular project. There is no hard and fast rule for the best way to create workspaces. It will depend on personal preference, methodology, environment and the like.

Create a Workspace
Creating a workspace involves mapping local folders to Team Foundation Version Control folders. To get started, open Visual Studio 2010 and select File | Source Control | Workspaces. This will open the Manage Workspaces window, where you can control the settings of all the workspaces on the machine. To create a new workspace, click the Add button. This opens the Add Workspace window, shown in Figure 1.


[Click on image for larger view.]
Figure 1. The Add Workspace window

Every workspace has a name, which is used to identify the workspace. As you can see from Figure 1, workspaces are tied to a Team Project Collection, so you cannot create a workspace that spans multiple project collections. Workspaces can span multiple Team Projects in a single Team Project Collection though. Workspaces are also tied to a computer and a user, which makes sense, since a workspace is a user's personal sandbox on a specific machine.

One of the new features with workspaces in TFS 2010 was the addition of permissions. There are three types of workspace permissions:

  • Private workspace
  • Public workspace (limited)
  • Public workspace

A private workspace is the default. This is how the previous versions of TFS have implemented workspaces. Essentially, it locks the workspace down to where it can only be used by its owner. If a user tries to use the workspace of another user that is marked private, they will receive an error message.

There are some development shops that want users to be able to share the same workspace. To allow for this, TFS 2010 implemented public workspaces. The Public workspace (limited) allows the workspace to be used by a valid TFS user, but they do not have check-in or administrative privileges. The Public workspace, on the other hand, is a fully functional workspace where users can check files in and out, as well as administer the workspace.

Workspaces contain local folders that are mapped to Team Foundation Version Control folders. A workspace can contain just one folder mapping, as shown in Figure 1, or multiple folder mappings. A majority of the time, a workspace contains 1-2 folder mappings. In Figure 1, I've mapped the root of the team project collection (shown as "$/") to a folder on the local machine ("c:\ws2"). This means that, when I am working with this workspace, any team project in this collection that I work with will have its contents stored locally in the c:\ws2 folder on my machine.

Notice that a workspace folder mapping has a Status field. There are two potential values: Active and Cloaked. Active indicates that a workspace mapping should be used, and that files should be synchronized between TFS and the local workspace. When you cloak a folder though, you are telling TFS to exclude that folder from certain tasks, such as adding new files and getting files.

Cloaking provides a way to cut down on the number of files retrieved and used from TFS. For example, you may have a workspace mapping for a team project. As part of that team project you may be storing binary files, which you don't need in your local workspace, in a folder in that project. You could create a second folder mapping to the location of those binary files, and mark that folder as cloaked. The next time you synch your workspace, it will get all the files from the team project, except for those binary files.

Workspaces are an important concept to understand to utilize Team Foundation Version Control. How they will be configured should be taken into account to ensure all team members are using workspaces in an effective and consistent manner.

About the Author

Mickey Gousset spends his days as a principal consultant for Infront Consulting Group. Gousset is lead author of "Professional Application Lifecycle Management with Visual Studio 2012" (Wrox, 2012) and frequents the speaker circuit singing the praises of ALM and DevOps. He also blogs at ALM Rocks!. Gousset is one of the original Team System/ALM MVPs and has held the award since 2005.

comments powered by Disqus

Featured

  • Naive Bayes Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the naive Bayes regression technique, where the goal is to predict a single numeric value. Compared to other machine learning regression techniques, naive Bayes regression is usually less accurate, but is simple, easy to implement and customize, works on both large and small datasets, is highly interpretable, and doesn't require tuning any hyperparameters.

  • VS Code Copilot Previews New GPT-4o AI Code Completion Model

    The 4o upgrade includes additional training on more than 275,000 high-quality public repositories in over 30 popular programming languages, said Microsoft-owned GitHub, which created the original "AI pair programmer" years ago.

  • Microsoft's Rust Embrace Continues with Azure SDK Beta

    "Rust's strong type system and ownership model help prevent common programming errors such as null pointer dereferencing and buffer overflows, leading to more secure and stable code."

  • Xcode IDE from Microsoft Archrival Apple Gets Copilot AI

    Just after expanding the reach of its Copilot AI coding assistant to the open-source Eclipse IDE, Microsoft showcased how it's going even further, providing details about a preview version for the Xcode IDE from archrival Apple.

  • Introduction to .NET Aspire

    Two Microsoft experts will present on the cloud-native application stack designed to simplify the development of distributed systems in .NET at the Visual Studio Live! developer conference coming to Las Vegas next month.

Subscribe on YouTube

Upcoming Training Events