Inside TFS

Local Workspaces in TFS 2012

A new feature in TFS 2012, Local Workspaces allows edits, renames and deletes to be done locally without any communication to the server.

Previous columns have talked about Team Foundation Version Control and workspaces, which define where code files are stored locally while being edited. Before Team Foundation Server 2012, all workspaces were considered "Server" workspaces; in essence, in a Server workspace, when a file's retrieved from TFS, TFS tracks which version of the file's on the local machine, and the file is set to read-only. By setting the file to read-only, the server is able to track exactly which version of the file is stored locally.

One drawback to Server workspaces is the ability to work offline from TFS. Each version of TFS has made strides to make offline work easier, but, by design, Server workspaces work best with an online connection into TFS.

TFS 2012 changes up the workspace options. Server workspaces are still available, and work exactly has they have in previous versions. However, TFS 2012 now contains a new type of workspace, called a Local workspace. Again, this is an oversimplification, but in a Local workspace, all the files are read/write, not read-only. The meta-data about the files is stored in a hidden folder in the root of the workspace, which allows edits, renames and deletes to be done locally without any communication to the server.

This improves the offline story with TFS significantly, as you no longer encounter issues with editing read-only files. It also makes it easier to work with other tools (such as Notepad) to edit code files. Making a change to a code file using Notepad will still mark that file as edited, which will be picked up by TFS the next time you connect.

In fact, it's this reduced "friction" for developers using Local workspaces that led Microsoft to make them the default workspace option in TFS 2012. Server workspaces are still available to those organizations that require a higher degree of control of their source files.

Let's look at a couple of features of Local workspaces. Figure 1 shows the Edit Workspace window in TFS 2012.


[Click on image for larger view.]
Figure 1. The Edit Workspace Window in TFS.

This workspace is defined as a Local workspace by default. To change the workspace to be a Server workspace, select Server in the Location dropdown box.

This workspace is defined as a local workspace, which means all changes to files will be tracked locally. All the metadata is stored in a hidden folder at the root of the workspace, named $tf. You can see this folder by navigating to the root of the workspace and modifying the view options to display hidden files, as shown in Figure 2.


[Click on image for larger view.]
Figure 2. The hidden $tf folder that contains version control metadata.

If you want to prove to yourself that Local workspaces work, open the Pending Changes page in Team Explorer 2012. Then open Windows Explorer and navigate to a file in your local workspace. Open the file using Notepad, make a change, and save the change. As soon as the change is saved, the file will appear in the Pending Changes window, under Included Changes, as shown in Figure 3.


[Click on image for larger view.]
Figure 3. Web.config being edited in Notepad, and appearing as a pending change.

In Figure 3, a new comment's been added to the web.config file, using Notepad. Because this file's in a local workspace, as soon as the change is saved, it appears in the Pending Changes page of Team Explorer as a change that needs to be checked into TFS.

There are a couple of disadvantages to using Local workspaces. Specifically, the performance of a local workspace will degrade as more and more files are added to the workspace. This is due to the workspace contents needing to be scanned and compared with the last copy of the file downloaded into the workspace. The more files in the workspace, the slower this scan operation runs. If your workspace contains more than 100,000 files, you should consider using Server workspaces instead.

Local workspaces are a much-needed new feature in TFS 2012, from which all developers will benefit.

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

  • Hands On: New VS Code Insiders Build Creates Web Page from Image in Seconds

    New Vision support with GitHub Copilot in the latest Visual Studio Code Insiders build takes a user-supplied mockup image and creates a web page from it in seconds, handling all the HTML and CSS.

  • 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.

Subscribe on YouTube

Upcoming Training Events