title: How should Perforce VCS roots be configured in TeamCity for large repositories?
body: <p>This question is identical to <a href="https://stackoverflow.com/questions/1560969/to-where-should-i-point-the-vcs-root-of-teamcity">this one</a>, but related to Perforce instead of SVN. In Perforce we have these branches:</p>
  
  <pre><code>Development\ProjectA\Trunk 
  Development\ProjectA\Release1
  Development\ProjectA\Release2
  </code></pre>
  
  <p>In TeamCity should there be 3 separate VCS roots or 1 with checkout rules specified for each build?</p>
  
  <p>Following the advice of the accepted answer in the linked question I changed our setup to have a single VCS root contain everything. The performance is dire with an initial checkout taking 45 minutes.</p>
  
  <p>The build configurations are set to checkout server side and have checkout rules such as:</p>
  
  <pre><code>-:.
  +:Development/ProjectA/Trunk 
  </code></pre>
  
  <p>I'm worried this setup isn't scalable. If with 3 branches it takes 45 minutes, a few more releases and the checkout time will be prohibitive. What is best practice for setting up Perforce VCS roots for large repositories in TeamCity?</p>