It is, but I've been meaning to run a script checking out every CVS revision in the past, and comparing it with what I have.
A good idea, but beware that that doesn't necessarily give the correct view of what a real cvs checkout gave at that time, since the ,v files have been moved around etc. I've spent some time reconstructing such moves/copies/deletes for the WebServer repo. E.g. here's a snippet from the 2.0 branch:
# This tablist.pike forked off server/modules/tags/configtablist.pike # sometime between 1999-08-05 03:00:22 +0200 and 1999-09-28 17:46:51 +0200. cvs_repo_rm server/modules/tags/Attic/tablist.pike stop_date_1="1999-08-05 03:00:23 +0200"
# Judging from log divergence, these files were copied from the 1.3 # tree between 2000-02-04 15:29:44 +0100 and 2000-02-10 06:40:34 +0100. # Judging from the tagging, they were copied between # 1999-08-25 03:01:45 +0200 and 2000-02-06 16:40:45 +0100. #cvs_repo_rm server/modules/ldap/ldaptag.pike #cvs_repo_rm server/modules/ldap/ldapuserauth.pike
# Moved here from server/modules/tags at 2000-04-05 16:31:58 +0200. cvs_repo_rm server/modules/database/sqltag.pike # Moved here from server/modules/misc at 2000-04-05 16:32:38 +0200. cvs_repo_rm server/modules/database/SQLuserdb.pike cvs_repo_rm server/modules/database/sqldb.pike stop_date_2="2000-04-05 16:32:39 +0200"
# 1.2 had a different version of tablist.pike in the graphics dir. # The old one is still in the attic, so just remove this to make it # show. The attic version got removed at 1999-09-29 12:26:28 +0200. # This one was moved here from server/modules/tags at # 2000-04-06 08:16:07 +0200. cvs_repo_rm server/modules/graphics/tablist.pike stop_date_3="2000-04-06 08:16:08 +0200"
In my conversions I've only checked that the branch heads are identical to the cvs repo's.