I am building a Module that comes from a CVS branch.
'cvs checkout' correctly keeps the branch name in the Tag file.
Now after a clean checkout if the 'Use Update' is checked under 'Source Code Management' then the command looks like:
cvs update -d -P -r branch_name -D 15 May 2012 13:12:24 -0600 module_name
After this the Tag file will have 'D2012.05.15.19.12.24' in it which basically corresponds to the Head now.
This could be related to this.