At least now it is clear to me why your attempts don't work. You imported all three versions of the code on the SAME vendor branch. (I believe the vendor tag being different doesn't matter for the branch creation - but would have to look into cvs documentation for that)
This is indeed different than what you described in an earlier post:
1) Untar a virgin openacs-4.6 tarball and add to cvs with 'cvs import' as 'service0' with release tag openacs-4-6 and checkout.
2) Copy my modified openacs-4.6 over the top of the virgin 4.6 in the file system.
3) Commit the changes.
If you had done this, your commands should give the result needed.
With your current setup,
cvs co -r milex -j openacs-4-6 -j openacs-4-6-3
means
take revision 1.1.2.2 (milex)
apply the changes from 1.1.1 -> 1.1.2
apply the changes from 1.1.2 -> 1.1.3
The first set of changes have been applied already, so CVS just ignores them (apparently).
At this point, your working copy is sticky-tagged as being milex, but really is 4.6.3.
I assume you misprinted the last command - and it really is
cvs co -j milex
This will merge your current working copy (which is 4-6-3) with the changes between the TRUNK (4-6) and milex. Voila.
Not the easiest way to the goal, but one of them. Don't forget to commit your work 😊