To help investigate some changes recently, I wrote a tool that will extract (reverse) patches from cvs. I was telling a coworker about this today, and he said it was a lot like cvsps. Maybe it is, but cvsps chokes big time trying to import our tree. Running it just in sys/dev for testing printed billions of lines of nonsense warnings without making much progress.
Anyway, on to the good stuff. My tool is called cvsinfo. Let's say I'm looking for a change I know deraadt made to acpi. Something about the workq. So I run "cvsinfo search workq" and it prints out some helpful info. I could also have run "cvsinfo search author:deraadt path:acpi" and found the same result. Whatever you remember or suspect about the change in question. Now I run this get the patch to undo that change "cvsinfo unpatch dev/acpi/acpi.c 1.171". Apply that, ready to test. It's written in Lua and there's a few moving parts you'll need to collect before you can make use of it, so I made one of those web things. The DBs are also interesting for stat mining, like how many developers committed to src this year (94) or how many commits they made (80177). http://www.tedunangst.com/cvsinfo.html