Drush beats CVS
I had checked out a bunch of modules fron CVS, but then I realized that CVS checkouts don't come with all the info such as version numbers, so I wanted to delete them and replace them with real copies. I used Drush and Bash, and here's how I did it.
Need to delete every CVS file from the sites/all/modules directory, and then replace each module with a fresh copy downloaded from drupal.org, and do it without ruining your SVN repository? "What's the difference?" you ask. Well, modules checked out directly from CVS don't get extra packaging info from drupal.org, and don't keep track of their own version numbers properly (you'll see a blank Version column on admin/build/modules).
So by getting a fresh copy from drupal.org, you get a proper .info file, and a LICENSE.txt file added for you. And it's a long module list? No problemo!
Assumptions - you have Drush installed and you're working with a checkout of an SVN repository.
cd to your modules directory, usually<br>cd examplesite/sites/all/modules
Update your modules to their latest versions - Drush is going to try and download the latest anyway, and you want them to match up.Tell Drush to grab fresh copies of modules from drupal.org with:find . -name CVS -depth 2 | sed 's/\// /g' | awk {'print $2'} | xargs drush dl
and watch the "Project xxx downloaded to ..." messages scroll by.
Get rid of all the CVS files with </code></span><span style="color: #993300;"><code><br>find . -name CVS -prune -exec svn rm {} \;
Add all the new files (should just be a bunch of LICENSE.txt files) with svn status | grep '^?' | xargs svn add
Then do a quick svn status - and you should see a bunch of Deletes on CVS files, Adding LICENSE.txt files, and Modifying any .info filesLast, SVN commit the whole bunch! yay! svn commit -m "removed old CVS tags, redownloaded modules from drupal.org" .
--
edit: thanks to Joel for a better introduction