We encountered a problem when using multiple roots in the same build. While one VCS root is updated (automatically on agent), there may be a commit (late_commit) in other VCS root, and this commit will be included in update of that root.
1. Bulld changes list does not include late_commit, so the build may fail because of "future" change, and vice versa.
2. late_commit may affect several VCS roots, and only its part will be included in build. This may cause invalid failures.
How is it possible to checkout all svn roots on the same revision?
The situation you're describing sounds like a bug. In the current implementation, the revisions to be checked out on agent side are sent from server, after "Checking for changes" phase is completed for all VCS roots for the build configuration.
On the agent side, checkout is performed not to the latest revision, but to the exact revision sent from the server.
and information about changes which were mistakenly included to the build.
The details on how to get logs etc. please read http://www.jetbrains.net/confluence/display/TCD3/Reporting+Issues page.
We have a number of builds with 5+ VCS roots, so if there is a bug, we will likely see it again.
Does this rule work the same way when "enforce clean checkout" is checked?
Yes, the same rule applies. Version to be checked out is sent from the server.