Introduction to Team Foundation for Visual SourceSafe Users
Visual SourceSafe is a source control tool for professional software developers. For more information about Visual SourceSafe, see Introducing Visual SourceSafe.
Team Foundation is a change management system that provides integrated source control, issue tracking, and process management for development teams.
This topic focuses in on the key differences between the source control features in Visual SourceSafe and Team Foundation.
This topic does not discuss migrating from a Visual SourceSafe to a Team Foundation source control environment. For more information about migrating, see Migrating to Team Foundation.
Differences between Team Foundation and Visual SourceSafe
Visual SourceSafe and Team Foundation source control enable you to accomplish the same basic tasks: develop more than one version of a product at the same time, change a released version of a product without affecting other versions, quickly retrieve a batch of related files, determine who made a change and when, compare revisions of a file, and move changes from one version into another.
The Team Foundation source control client interfaces were designed to be familiar to Visual SourceSafe users. Both products offer a command-line client and Visual Studio 2005 integration. Team Foundation source control does not have a separate user interface like Visual SourceSafe.
But despite many similarities, Team Foundation and Visual SourceSafe differ in fundamental ways. This topic is divided into two main sections which expand on these differences:
The Architectural Differences section describes technological and operational differences between Team Foundation and Visual SourceSafe.
The Functional Differences section lists features that are present in one product but not in the other, describes minor feature changes, identifies default settings that differ by product, and explains how these changes can help your team develop more effectively using Team Foundation.
SourceSafe Explorer and the plug-in for Visual Studio read from and write to a Visual SourceSafe database, which is a collection of files that are usually stored in a shared network folder.
Team Foundation is a client-server source control system that uses a .NET Web service to access items stored in a SQL Server database. Team Foundation source control's architecture, offers increased performance and reliability.
Security and Project Rights
The Visual SourceSafe User Rights and Assignments that you set in the Visual SourceSafe Administrator program are independent of Windows sharing permissions for the Visual SourceSafe database folder. You can set rights and assignments for specific Visual SourceSafe projects or individual Visual SourceSafe users but all Visual SourceSafe users must be granted the same permissions for the Visual SourceSafe database folder. Therefore, all Visual SourceSafe users, regardless of their project-level rights as specified by using the Visual SourceSafe Administrator program, can access the shared folders and have full control over all Visual SourceSafe data.
In Team Foundation, user-specific operational permissions and project-level permissions are tied to Windows user accounts. User authentication is securely performed by Internet Information Server. Separate access to the SQL Server database does not have to be granted to individual users performing source control operations. Consequently, the resulting Team Foundation security infrastructure is robust, secure, and easy to administer.
Since Visual SourceSafe does not have a server component, operations involving the transfer of data from the client to the database are non-transactional. This means that an operation cannot be rolled back if a problem occurs. In the rare cases when a problem such as the loss of network connectivity does occur in the middle of a write operation, the integrity of the affected files can be compromised and information lost.
Team Foundation is a client-server application in which write operations occur in the database by way of stored procedures that are not subject to network connectivity issues. Furthermore, certain operations are performed by using transactions so that they can be rolled back in the event of an error. This architecture makes sure that the source files are not unknowingly corrupted. It also makes sure that groups of files that contain dependent changes are all committed to the source control server at the same time, as a presumably well-tested changeset.
Team Foundation can support teams of up to 2000 users whereas Visual SourceSafe is recommended for teams of twenty or less. Team Foundation servers can contain as much data as a SQL Server database allows (terabytes) and your hardware can support, whereas the recommended size limit for a Visual SourceSafe database is 4 GB.
Conceptually, the internal structure of a Visual SourceSafe database and that of a Team Foundation source control server is similar. Both databases and servers are organized hierarchically. Folders contain files. Files consist of versions that are identified by number and date/time of creation.
Team Foundation advances a concept that does not exist in Visual SourceSafe; changeset. A changeset is a logical container in which Team Foundation stores everything related to a single check-in operation: file and folder revisions, links to related work items, check-in notes, a check-in comment, and other information such as who submitted the change. For more information, see Working with Source Control Changesets.
Sharing and Pinning
Team Foundation does not have equivalent commands to Visual SourceSafe's Share or Pin features.
When you migrate Visual SourceSafe projects to Team Foundation, Pins in a Visual SourceSafe database are replaced by labels.
Differences in How Histories are Stored in Team Foundation
Visual SourceSafe and Team Foundation store the history of the following actions differently.
Add and Create In Visual SourceSafe, adding a file or folder creates a version of the parent in addition to the file. In the parent history, the action is recorded as "add" and in the file history, the action is recorded as "create." In Team Foundation, adding a file or folder just creates a version of the file or folder itself with a "add" action. No version of parent is created for this action.
Rename, Delete, and Undelete In Visual SourceSafe, these actions create a new version of parent; whereas in Team Foundation they create a new version of the item itself.
Move In Visual SourceSafe, when you move a folder, new versions of both the source and destination parent folders are created, with actions recorded on each parent that moves the folder into or out of the parent. No version for folder F is created. For example, if you move folder F from source S to destination D, a new version of D is created by using the "Move $F from S" action and a new version of S is created by using the "Moved $F To D" action. In Team Foundation, only a new version of F is created by using the "Rename" action.
Differences in Check-Out and Check-In
In Visual SourceSafe, you must do an explicit check-out and check-in only if you are editing a file. In Team Foundation, every action requires an explicit check-out and check-in.
Features that Work Differently in Team Foundation
Unlike Visual SourceSafe, Team Foundation does not perform a silent Get operation when you check out a file.
In Team Foundation, multiple users can check out and change the same item at the same time. In Visual SourceSafe, checkouts are exclusive, by default. However, you can lock a file in Team Foundation to prevent other users from checking it out or checking in changes. For more information, see Understanding Lock Types.
Branch and merge Visual SourceSafe has very basic support of branch and merge because Visual SourceSafe does not store the merge history between two branches of files or folders. However, Team Foundation source control does have support for merge history. Without merge history, you end up doing baseless merge in Visual SourceSafe.
Checkout operation does not perform a get latest on files being checked out
When you perform a get operation to populate your workspace with a set of files, you are creating a consistent snapshot from source control. Typically, the configuration of source on the system represents a point in time snapshot of files from the Team Foundation source control server that are known to work together, and therefore can be built and tested.
As a developer that works in a workspace, you are isolated from the changes being made by other developers. You control when you want to accept changes from other developers by performing a get operation as appropriate. Ideally when you do this, you will update the configuration of source, and not just one or two files. This is because changes in one file typically depend on corresponding changes to other files, and you must make sure that you still have a consistent snapshot of source that can be built and tested.
This is the reason that the check-out operation does not perform a get latest on the files being checked out. Updating that one file being checked out would violate the consistent snapshot philosophy and could cause a configuration of source that is not able to be built or tested. As an alternative, Team Foundation forces you to perform the get latest operation at some point before you check in your changes so if you try to check-in your changes, and you do not have the latest copy, you will be prompted with the resolve conflicts dialog box.
Team Foundation Features that Do Not Exist in Visual SourceSafe
Visual SourceSafe has working folders. For more information, see How to: Set the Working Folder.
E-mail notifications by Setting Alerts
Visual SourceSafe Features that Do Not Exist in Team Foundation
Archive and Restore
Team Foundation Power Toy, available at http://go.microsoft.com/fwlink/?LinkId=73812, contains a rollback command.