I've been using Devel::Cover
a ton lately for an internal project - major kudos to paul for writing such an excellent tool. while I've been following the test-driven development meme for a few years now, it feels as though I've been flying blind without Devel::Cover
. don't leave home without it.
I've also gotten to know Subversion on this project, and I can see why people favor it over CVS. the main feature I like thus far is that I can feel free to commit files under different name and just svn move
them later without losing the commit history. in fact, I've shuffled large parts of the project around with ease, which is a really, really great thing to be able to do, especially at the start of a project - how many times have you not reorganized when it made sense because of your versioning system? well, ok, we reorganize anyway, but now your history moves with you, which is nice.
I also like that with subversion each commit is a separate working version, which means that I never, ever need to mess with tags again. not that tags aren't useful, but if I want to go back to where I was at some logical milestone (like last friday when I figured out $foo) I can without picking up my CVS book, figuring out how to tag it, and hoping that I don't muck up the repository in the process.
one minor annoyance with subversion is that svn
just doesn't seem to fly off my fingers like cvs
does. for that, I've used a little shell hack to help. it's been a while since I've done real shell work so it could probably be cleaner, but in case it helps anyone else migrate here it is:
cvs_or_svn() { if [ -e .svn ]; then /usr/bin/svn $* else /usr/bin/cvs $* fi }
alias cvs="cvs_or_svn "