the -d option in cvs is confusing at times. The documentation seems to suggest it should be used for CVSROOT. however it can be (in some sense) overloaded to get the effect of checking out a directory without the whole tree structure being built
say you want to checkout A/B/C/D into folder P then do
cvs -d P A/B/C/D
this will have the effect of getting directory contents of D in P, withouth creating a directory named D.
the base cvsroot will be picked from whatever your CVSROOT reads, for eg: :ext:pmukherjee@cvsserver:/usr/local/rep

say you want to checkout A/B/C/D into folder P then do
cvs -d P A/B/C/D
this will have the effect of getting directory contents of D in P, withouth creating a directory named D.
the base cvsroot will be picked from whatever your CVSROOT reads, for eg: :ext:pmukherjee@cvsserver:/usr/local/rep