Tuesday, February 03, 2009

Subversion

I have been a late adopter of Subversion. For years I was a CVS user. Of course, I normally use repositories set up by somebody else. In grad school the FLUX research group still used CVS, so I used CVS. Now that I work for BAE Systems AIT, I use subversion because that is what they use. They migrated a few years ago to subversion from CVS because subversion is better than CVS.

I was never a power user of CVS. I basically checked things out and checked them back in. Occasionally I would start repositories or go into the server and clean things that I had messed up, but I never really needed to do anything fancy. I tagged and checked out dates a little bit. That's it. I mention all this because I am going to talk about some cool features of subversion. They might be present in CVS and I just don't know.

svn info

This is a basic command, but I mention it as a reminder. Once you start messing with the other commands below, remembering this one is crucial.

svn propedit svn:externals .

This one actually blew my mind. You can set up "externals" in subversion which link to other repositories. So if you use a lot of different tools from your company, you can link to your development branches for those tools. You can also link to external repositories as well. Very neat. Makes development using shared resources much easier.

svn sw respository .

This switches the repository. For me, I am developing on some branches for VxWorks, but I want to run valgrind on the my code. So I check out the linux version of the code, only I switch the repositories to use my VxWorks branches for the externals. Then I run valgrind.

svn copy repository new

Another basic command, but useful when branching. Subversion does diffs, so branching is not going to blow up your server.

No comments: