Update, 17 April 2009: doh lives as a gem on github now.
Today I added a new file to an in-progress Rails app, watched all the tests pass, and committed. Except I forgot to
svn add the new file. Again.
Subversion should prevent me from checking in if I’ve got unadded files in a project, right?
But looking through the Subversion book and
man pages, I couldn’t find how to make it so. (Pre-commit hooks run on the repository side, so they don’t have access to your working copy.)
So, I’ve written a short Ruby script to help.
svn ci with unadded files lying around,
doh stops your commit:
And then create an alias, you know the drill:
Most of the time
doh just does “
exec 'svn', *ARGV”, so it’s safe as your full-time
svn wrapper. It only kicks in if “
ci” is one of the command-line arguments, and only then if there are unadded files in the current directory.
To temporarily override
doh’s behavior and commit anyway, just prefix the
svn with a backslash:
\svn ci -m "don't worry, I know what I'm doing"
I’d love to hear if you decide to give
doh a try—or if there’s some built-in way to achieve the same goal in Subversion! I’ll be glad to turn this into a gem if there’s any demand for it.