The ability to check out and check in is disabled if the network connection is lost. However, the product supports methodologies for offline work with the purpose of re-syncing once connectivity is re-established.
Check-outs and Check-ins continue to work against the central server. Only “Get Latests” go through the remote Team Proxy.
When the first remote user downloads (Get Latest) a file, it is then stored in the proxy server’s cache. When the same file is requested at the same remote site, the proxy determines if it has the latest version. If it does, then it is retrieved from the cache. If there is a newer version availale on the Team Foundation Server, then the central version is downloaded and the remote cache refreshed.
Any downloaded files are cached as needed. Depending on the max cache size, infrequently used files are flushed out when space is required.
The underlying repository, SQL Server 2005, does support remote sites and two-way replication; this is not a tested or supported scenario for Team Foundation Server usage. Remote development shops are supported through a remote proxy server that caches file downloads (which is a high bandwidth activity). The intention of the Team Foundation Server Proxy is to boost network performance by caching copies of source code files in a remote location. Remote users will still access the central server for exchange of SOAP messages and check-ins/uploads through HTTP, traversing firewalls. All downloads (i.e. Get Latest) will be cached through the remote proxy. (http://msdn2.microsoft.com/en-us/library/ms253156(VS.80).aspx)
Binary files are supported. They can be as large as the underlying file system (i.e. > 4GB). In addition, the repository does provide delta binary file storage so as to minimize the bloat for each revision in the repository.
Shadow Folders are a specific concept supported by VSS. Shadow Folders are typically used as part of a build process.. There is no direct equivalent in Team Foundation Server. To purely replicate this functionality you can create a separate workspace and have a scheduled task to sync, “Get Latest” on a regular basis. If you are using Shadow Folders as part of a build process however, you may want to look at doing this as part of a build task using Team Build.
Uncommitted changes remain on the developers’ workstation. The repository does keep track of who has checked out what files (and what revision they checked out from). Developers have the option of checking in or “shelving” their work in progress to a ShelveSet which does not affect the primary branch but does stores the uncommitted work up on the server. This is useful for backing up, transferring work in progress, passing around code for code reviews, and handling general workflow interruptions (i.e. working on New Feature X, must revert to latest revision to perform Hot Fix Y, and then go back to work in progress to complete Feature X).
ChangeSets are the published artifact in the database repository. This provides a list of all the files changes and using the tools, can easily display the differences between the current, previous, or workspace version.
The “tf checkout” command supports a /recursive switch checks out all files that match the itemspec in the current directory or specified location and all of its subfolders.