cvsdo is your friend. it's not perfect, but it should be able to do the following (for a readonly repository):
J:\2002\_test>echo hi > test

J:\2002\_test>cvsdo add test

J:\2002\_test>cvs diff -uN test
Index: test
===================================================================
RCS file: test
diff -N test
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test        5 Nov 2002 17:15:53 -0000
@@ -0,0 +1 @@
+hi

J:\2002\_test>cvsdo diff -uN test
Index: test
--- nul
+++ test
@@ -0,0 +1 @@
+hi

J:\2002\_test>

I don't think new directories can be handled in this way.

Important setup notes: you need a cvsdo and a cvsu


.cvsignore
AUTHORS
ChangeLog
FAQ
Makefile.am
NEWS
README
THANKS
TODO
bootstrap
configure.in
cvschroot.pl
cvsco.sh
cvsdiscard.sh
cvsdo.pl
cvspurge.sh
cvsrmadm.sh
cvstrim.sh
cvsu.pl
cvsutils.1
cvsutils.spec.in

cvsdiff.cvs - diffs between the files here and the redbean cvs