The pros and cons of sharing VCS roots within a project - best practice?

Currently each of our build configurations within a single project have their own VCS root. It appears that it may be more efficient to share the root within the project if the configurations are the same. Certainly I see that there is a maintenance and duplication issue with our current setup, in exchange for which we gain independent configurability. I'm not sure that that trade off is actually worth it for us. Are there any other tradeoffs involved?

Could someone with knowledge of how TeamCity handles VCS roots internally comment on what the best practices are concerning VCS roots?

Thanks

Matthew Jaskula

6 comments

Shared VCS roots reduce load on the VCS servers.

--
Pavel Sher

0

Can you provide a little more detail as to how the load is reduced? or the specific/quantifiable implications of having each build conf have its own vcs root?

0

My guess: each VCS root needs to be checked independently for any incoming changes, so there are more requests on the VCS server(s)

0

Exactly, TeamCity polls each VCS root for changes, so the more VCS roots pointing to the same server you have the more load on this server is produced.

--
Pavel Sher

0

Right. I was looking more for a cost-benefit explanation of many, smaller checks vs. less numerous but more voluminuous requests for changes. If you setup your VCS root high enough each of your checks for "what has changed?" could get very expensive. And then you have to worry about the quiet period and individual build configurations triggering "on time".
How many build configurations do you guys at Jetbrains have on a common TeamCity server? How many VCS roots do you use?

0

We have one server with 51 project and about 190 build configurations. There is also 117 VCS roots. Most of these VCS roots are attached to build configurations and is polled for changes however only in about a half of the projects changes appear regularly, other projects are created for various branches and are not active.

We use different types of VCSs: Perforce, SVN, CVS, TFS and even Mercurial, but most of our VCS roots are SVN.

Unfortunately we did not do any load testing and did not perform measurements whether many requests to VCS server with small response is better than one with huge response.

--
Pavel Sher

0

Please sign in to leave a comment.