You could run this for each module, but it'll tax the CVS server pretty heavily, and you'll have a mess on your end (sorting). It'll work, though.. (tested very quickly; may be buggy).
#--CUT EXTENSION=xml; SUFFIX="_REV-"; for f in `find . -name '*.'$EXTENSION`; do REV=`cvs log $f | grep "^revision" | awk {'print $2'}`; for r in $REV; do cvs update -r $r -p $f > $f$SUFFIX$r; done; done; #--CUT
Run it from the top level of each (previously checked out) module.
Enjoy.. remember.. it's probably buggy, and you're going to upset some admins. (-: Play on your own server.
You will upset the admins and developers trying to work on PHP, so I suggest you only try to do such things on a very small set of files.
Goba
