The size limit for CVS would probably depend on the specific implementation of CVS you have chosen to go with. That particular application would have set the maximum string size for the version number. I can't imagine it would be much higher than 50 or 100, but that's not the point. Although you could probably get away with having such a long version number string, it is not advisable.
If the version number is too long it will be very difficult for people read and understand. You should consider using a shorter, more condensed version which will convey the same meaning.
In some schemes, sequence-based identifiers are used to convey the significance of changes between releases: changes are classified by significance level, and the decision of which sequence to change between releases is based on the significance of the changes from the previous release, whereby the first sequence is changed for the most significant changes, and changes to sequences after the first represent changes of decreasing significance. [Wikipedia's Software versioning]
Since each number after a decimal point signifies a level of change significance, you should really only need 4 or 5 periods max. Otherwise, it is an indication that your software build cycles are TOO LONG or you are just abusing the version number conventions. I would stick with 4 or 5 periods, max.
It should go something like this: <major version>.<semi major release of version>.<release version>.<build number>, which leads to something like 4.2.12.45 if you are working on product version 4 (which is pretty much what you show to the user), and it was the second big release because there were significant changes to how 4 works, but it still works like 4 was supposed to work, and the 12th version with bug fixes, security updates, etc. And finally the 45th development build while doing testing before the release of 4.2.12. This is just an example, but something like this works very well.