Almost holiday time, time to tidy up all work. Recently I moved to Tortoise SVN for all my source control needs. Getting that to work was not that difficult, but to keep it up and running for my set of Visual Studio solutions took a little more effort than I had hoped. The enormous amount of "hidden" files tools like Resharper, nHibernate and VS itself leaves on your disk takes a lot of maintenance. Tortoise SVN has an an exclude files list, this kept growing and growing. Did you know there are CACHE, cache and Cache files ? (Yes you can use expressions in the exclude list) Things got worse when a deployment project was added. Switching from a debug to a build version was enough to get in an endless number of requests for a cleanup and "X is not a working copy directory" error messages.
Instead of diving deep into SVN configuration I gave Visual SVN a try. This is an add-on for Visual Studio which integrates subversion into Visual Studio. Its is a commercial product. A 30 day full functional trail and $49 for a license. With the current Euro-Dollar exchange rate the ROI was almost instantaneous.
Visual SVN requires the latest Tortoise SVN to be installed. TortoiseSVN has a built in "check for updates" and considered itself fully up to date at version 1.48. The VisualSVN setup didn’t go for less than 1.50, thank goodness the link built into the setup started the required update. After a reboot (due to the windows shell integration of TortoiseSVN) Visual SVN installed without a glitch in both Visual Studio versions it found on my machine, 2005 and 2008.
Visual SVN takes a more subtle approach than Tortoise SVN. In TSVN I just submitted the whole folder to a repository and set the files to exclude in a filter. With VSVN you submit a solution to SVN from a VS (context) menu. VSVN will create the repository for you and submit just the needed files. No more, no less. End of filter hell. End of working folder hell.
Before creating a nice new clean repository I had to get the code out of the existing messed up one. This took a little effort. You can copy or move sources under SVN control around. The good thing is that SVN will keep track of the underlying repository. The bad thing is that the way to get rid of this repository binding is well hidden in the docs. To un-version a source you have to export it to itself. In the context menu select Tortoise SVN | Export. When prompted for a directory pick the source directory itself. SVN will prompt "Do you want to make this working copy unversioned?". A confirmation will free the source by removing the svn information.
VisualSVN works very well together with TortoiseSVN. You can view and do everything from both Visual Studio and the Windows Explorer with SVN.
No big difference. What I like far better in VS are the overlay icons. They a far more subtle than the default Tortoise SVN ones. And they update immediately after a status update. In the Windows explorer they really lag behind (on my Vista machine). Displaying the right icons often requires reopening the explorer window.
That’s it, another improvement of my toolbox. And all sources ready for holiday.