Workspace: the final frontier

We've been getting some feedback that the "workspace" concept isn't entirely clear. In my post on baselines, I briefly mentioned the concept of workspaces and would like to write a bit more on the subject to clear up any questions.

If a system user wants to interact with items stored in team foundation's source control, they need to have a workspace. This workspace is used to track what versions of controlled items the user downloaded as well as what changes they have pending. Each workspace resides on one client machine only and has a single owner.

Individual users, however, may have multiple workspaces as long as they have different names. This is because workspaces are identified by a combination of the workspace and the username of the workspace owner. For example, MyWorkspace;BIGCORP\JohnDoe would be a workspace named "MyWorkspace" owned by user "JohnDoe" in the "BIGCORP" domain. If you're currently logged in as JohnDoe, you can specify this workspace as just "MyWorkspace".

Workspaces also store working folder mappings and cloakings. Users can decide to "map" folders and files from the repository to particular local paths. They can also inform the server that they are not interested in a particular folder or file with the "cloak" option. See Jason's post here for more on the subject.

Several commands take the "/workspace" option to specify a workspace or all workspaces owned by the current user if specified as "/workspace:*". The "/user" option can be used to specify other users as well. In particular, the workfold command uses this option to determine which workspace you wish to create a local mapping or cloaking for. The shelve command can also take a workspace name so that a user can decide which workspace's changes to put in the shelveset. The status command can take a workspace, as well, to see pending changes for a particular workspace. Lastly, undo can take a workspace to determine which workspace's pending changes to undo.

I hope that clears things up a bit. If you have any questions, let me know and I'll see what I can do to help.