I currently have my VCS roots pointing at the Subversion directory containing trunk, branches & tags, and I use a checkout rule to complete the path to the appropriate branch (as I believe is the preferred practice in TC).
In that checkout rule, the completed path is a parameter (I call it %svn.branch%) which is then defined in either the project or build parameters section.
So far so good - if it's set to "trunk" in the build parameters I get a build from trunk, whereas if it's set to branches/foo, I get a build from there. For each build, the changeset collected is limited only to that particular branch.
Where I'm encountering problems is when I run a custom build and change the current value of svn.branch there. I then get a pop-up window explaining something about branch builds, and every proceeds normally except that the changeset includes every single change at the level above trunk/branches, in other words far more VCS changes than are relevant. This then remains in the build log. The changes that are not relevant record "0 files", but it makes a complete mess in terms of being able to see what went into that particular build.
Is this a bug, or am I misusing the branch build feature?
UPDATE: Had another problem relating to this just now - I ran a build, substituting the VCS checkout path as a custom build, and TeamCity did not check out the HEAD of that path, but checked out from a few revisions back. Not sure what's going on here, but it seems like the feature is wholly unreliable.
When I run these custom builds, I get a message as follows:
Parameters were changed in this custom build and these changes affect build version control settings (VCS roots and/or checkout rules).
To distinguish this custom build from regular builds, it will be given the following automaticatlly generated branch name "/1.0".
If you want to change this branch name you can specify it in configuration parameter: "teamcity.build.branch"
Click "OK" to continue and run the build with auto-generated branch name.
Click "Cancel" to return to custom build dialog.
None of the above gives me any reason to suspect I'd get a checkout from an old revision.