Team Foundation source control provides standard source code version control functionality, which can scale to handle thousands of developers. Beyond the typical source control functionality, Team Foundation is also an enterprise class software configuration management product that provides integrated version control, issue tracking, and process management for development teams.

Team Foundation source control includes the following features:

  • Complete version control feature set.
  • Check-ins on a one change at a time basis.
  • Powerful branching and merging.
  • Shelving.
  • Check-in policies.

Besides being integrated into the Visual Studio environment with other Team Foundation technologies, such as creating a build and work item tracking, the source control also includes a stand-alone graphical user interface and a command line interface.

Source Control User Roles

There are two primary types of roles that use Team Foundation source control.

Contributor   A contributor is a user of Team Foundation source control who is primarily concerned with adding, deleting, and modifying files in the source control server. This role is most frequently associated with software developers working on a software project; however, because not all files that are contained in the source control server are necessarily source code files, the contributor role is not limited to developers. For example, a contributor could be a technical writer whose product is documentation, or a graphic artist whose product is a binary image file.

A contributor uses Team Foundation source control as a mechanism for sharing their work with other contributors, for maintaining a historical view of all changes which have been introduced by all contributors, and for archiving their work in a central location that can be backed up for redundancy.

A contributor will use Team Foundation source control to:

  • Retrieve files from the source control server.
  • Check out files for modification.
  • Check in modified files.
  • Add files to the source control server.
  • Delete files from the source control server.
  • Compare files.
  • Merge changes between files.

Administrator   The second role is an administrator who is concerned more with the administration of the source control server and the use of the files that it contains for creating a reproducible software build. An administrator is responsible for maintaining the integrity of data stored in the software configuration management system. This task differs based on a particular system; however it usually involves managing access to the source control server and enforcing a backup policy for data that it contains. Because the software configuration management system is the storehouse for the intellectual property of the company, the administrator has ultimate responsibility for ensuring the availability and the integrity of the corporate intellectual property.

The administrator is responsible for managing and branching the various code lines in the source control server according to the configuration management methodology being employed by the team. Typically, the software configuration management engineer is the one who enforces policies, such as which branches are writeable and when a branch should be created.

The administrator might also be responsible for merging changes between branches; however, this role is frequently trusted to contributors in most environments. The administrator might also be responsible for producing a reproducible build from the files placed in the software configuration management system. To this extent, the administrator needs the ability to mark a snapshot of the files during the build process for later retrieval. The administrator might also have to archive and version the intermediate and final output of the build process for later review.

An administrator will use Team Foundation source control to:

  • Branch code lines in the source control server.
  • Label a snapshot of the current development state.
  • Merge changes between source control server branches.