VCS root is a collection of Configuring VCS Settings (paths to sources, login, password, and other settings) that defines how TeamCity communicates with a version control (SCM) system to monitor changes and get sources for a build. Each build configuration has to have at least one VCS root attached to it, however you can add as many VCS Roots to it as you need. VCS roots are set up on the Version Control Settings page of a build configuration settings. Please, refer to the following pages for VCS-specific configuration details:
When a VCS root is configured, TeamCity regularly queries the version control system for new changes and displays the changes in the Build Configuration that have the root attached. You can set up your build configuration to trigger a new build each time TeamCity detects new changes in any of the build configuration's VCS roots, which suits for most cases. When a build starts, TeamCity gets the changed files from the version control and applies the changes into the Build Checkout Directory.
note
Make sure to synchronize the system time at the VCS server, TeamCity server and TeamCity agent (if agent-side checkout is used), if you use the following version controls:
CVS
StarTeam (if the audit is disabled or the server version is older than 9.0).
Subversion repositories connected through externals to the main repository defined in the VCS root.
VSS (all VSS clients and TeamCity server should have synchronized clocks)
tip
Note that you can manage all VCS root configured within a project, or in TeamCity:
From Administration | VCS Roots page: you can view all VCS roots configured in TeamCity, edit/delete them, and attach/detach to build configurations. Only System Administrators can edit all VCS roots on this page. Project Administrators can edit roots of the projects where they have this role.
From Administration | Projects | <Project_Name> settings | VCS Roots tab: you can view all VCS roots configured within the project and create/edit/delete/detach them.
Sharing VCS Roots Between Projects
By default, VCS roots can be used by all build configurations of the project. However, they can also be "shared", i.e. they can be used by different projects in TeamCity. To share a VCS root enable the Make this VCS root available to all of the projects option on the root's settings page.
Sharing VCS roots saves the administrator's time and the hassle of creating and maintaining identical VCS roots in the repository.
If someone attempts to modify a VCS root that is shared, TeamCity will issue a warning that the changes to the VCS root could potentially affect more that one project. The user is then prompted to either save the changes and apply them to all the projects using the VCS root, or to make a copy of the VCS root for use by either a specific build configuration or project.
note
To be able to share VCS Roots, you need to have Change shared VCS root permission which can be assigned to you by the TeamCity System Administrator.