Wikipedia defines Source control as “Revision control is the management of multiple revisions of the same unit of information.” In other words: Source control allows distributed work in teams of any size, at different locations, while avoiding conflicts in source code changes. There are two famous source control software by Microsoft: Microsoft Visual SourceSafe and Team Foundation Server. Here is the definition for each on according to Wikipedia:
- Microsoft Visual SourceSafe (VSS) is a source control software package oriented towards small software development projects. Like most source control systems, SourceSafe creates a virtual library of computer files.
- Team Foundation Server (TFS) is a Microsoft product offering source control, data collection, reporting, and project tracking, and is intended for collaborative software development projects.It is available either as stand-alone software, or as the server side back end platform for Visual Studio Team System (VSTS).
We have been using the VSS for a long time, but developers always experience some network troubles when working on VSS, as well as the limited features in it. Like we can’t generate a report on the daily work, also many times developers experienced loss in their updated files. But its never too late to improve our work and look for a better solutions to protect our code and control the team work. So the decision was made to replace the VSS with the TFS.
Here is a brief list of major differences between VSS and TFS:
- VSS: Read and write files and store them on the shared network folder
- TFS: .NET web service that stored files and items in a SQL Server database
- VSS : All SourceSafe users are granted the same permission and have full access on all projects and files stored in SourceSafe
- TFS : Team server users are window user accounts. Users will have specific permissions and project-level permission. No need to give full access to users on SQL and on all projects, the Administrator can give different permission levels to different users.
- VSS : Since we are dealing with transfer of data through a network, operation cannot be rolled back if a problem occurred. 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.
- TFS : 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 and rolled back in the event of an error can be done. Thus no corruption of files occur, groups of files that contain dependent changes are all committed to the source control server at the same time.
- VSS : Teams of twenty or less users, and database size is limited to 4GB
- TFS : up to 2000 users and can contain as much as a SQL Server database allows (terabytes)
Both are databases organized hierarchically (folders contain files), files consist of versions, identified by number of date/time of creation.
- VSS : No changesets
- TFS : 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
- VSS : 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.”
- TFS : 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.
- VSS : these actions create a new version of parent;
- TFS : they create a new version of the item itself
- VSS : 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.
- TFS : only a new version of F is created by using the “Rename” action.
- VSS : you must do an explicit check-out and check-in only if you are editing a file
- TFS : every action requires an explicit check-out and check-in
- Silent Get operation when you check out a file
- Checkouts are exclusive, by default
- Does not store the merge history between two branches of files or folders
In TFS :
- Does not perform a silent Get operation when you check out a file
- Multiple users can check out and change the same item at the same time, you can lock a file in Team Foundation to prevent other users from checking it out or checking in changes
- Does have support for merge history. Without merge history