Migrating from Visual SourceSafe
Visual SourceSafe is a source control tool for professional software developers. For more information about Visual SourceSafe, see Source Control for Visual Studio. 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.
The Team Foundation Visual SourceSafe converter tool transfers files, folders, version history, labels, and user information from a Visual SourceSafe database to Team Foundation version control. Before you move files and historical information to Team Foundation, you should analyze a backup copy of the Visual SourceSafe database, check in as many files as possible, and understand what information cannot be transferred from Visual SourceSafe to Team Foundation.
Differences between Team Foundation and Visual SourceSafe
Visual SourceSafe and Team Foundation version control enable you to accomplish the same basic tasks:
Develop more than one version of a product concurrently
Make changes to 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
Move changes from one version into another
The Team Foundation version control client interfaces were designed to be familiar to Visual SourceSafe users. Both products offer a command-line client and Microsoft Visual Studio Team System integration. Team Foundation version 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.
The 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.
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 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 access rights are tied to Windows user accounts. User authentication is securely performed by Internet Information Services. Separate access to the SQL Server database does not need 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 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 within the database by way of stored procedures that are not subject to network connectivity issues. Furthermore, certain operations are performed using transactions so that they can be rolled back in the event of an error. This architecture ensures that your source files are not corrupted unknowingly. It also ensures that groups of files containing 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 20 users 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 called a changeset. This concept does not exist in Visual SourceSafe. A changeset is a logical container in which Team Foundation stores everything related to a single check-in operation, such as 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 Version 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 as well as the file. In the parent history, the action is recorded as "add"; in the file history, the action is recorded as "create." In Team Foundation, adding a file or folder simply 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. However, 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 moving 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 with the "Move $F from S" action, and a new version of S is created with the "Moved $F To D" action. In Team Foundation, only a new version of F is created with the "Rename" action.
Differences in Check-Out and Check-In
In Visual SourceSafe, you need to 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
By default Team Foundation does not perform a silent Get operation when you check out a file.
In Team Foundation, multiple users can check out and make changes to the same item concurrently. 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 version control does have support for merge history. Without merge history, you end up doing baseless merges in Visual SourceSafe.
Get latest on check-out
When you check out a file in Visual SourceSafe, Visual SourceSafe retrieves the latest version of the file from source control. You can configure the checkout behavior in Team Foundation version control in two ways. If you want the checkout behavior to be the same as Visual SourceSafe, you can configure the checkout settings to get the latest version of items when checking them out. For more information, see How to: Configure Check-Out Settings.
You can also configure the check-out behavior to mark the local copy of the file as checked out without getting the latest version from the server. This check-out behavior is useful when you perform a get operation to retrieve a set of files. Typically, the configuration of source files on your computer represents a point-in-time snapshot of specific files, which are known to work together, from the Team Foundation version control. Therefore they can be built and tested together.
As a developer working in a workspace, you are isolated from the changes 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 entire configuration of source, and not just one or two files. The reason for this is that changes in one file typically depend on corresponding changes to other files. This check-out behavior ensures that you always have a consistent snapshot of source that can be built and tested.
When you check in your changes, Team Foundation will merge your changes with any changes that were made on the server version. You will be prompted with the resolve conflicts dialog box if any conflicts are detected.
Team Foundation Features that Do Not Exist in Visual SourceSafe
E-mail notifications by Setting Alerts
Visual SourceSafe Features that Do Not Exist in Team Foundation
Archive and Restore
See the following sections for more information:
How History Events Are Migrated
Describes how particular history events in Visual SourceSafe are migrated to Team Foundation version control.
How the Converter Groups Changesets for Improved Performance
Describes how VSSConverter converts the changesets that are used to group information about a check-in.
Planning for Source Control Migration
Describes how to plan for a migration from Visual SourceSafe to Team Foundation version control.
Migrating Source Control
Describes how to migrate from Visual SourceSafe to Team Foundation version control.
After Migrating Source Control
Describes the tasks to do post-migration to ensure a successful migration and troubleshoot migration problems.
VSSConverter Command-Line Utility for Source Control Migration
Lists all of the command line options for the source control migration converter.