Adsense

Friday, May 18, 2012

Subversion/SVN 1.7 upgrade causes CruiseControl.Net to checkout instead of update

I upgraded my Subversion to 1.7+ and ran the svn upgrade command to update my working copy to the new format. As a side effect, my CruiseControl.Net builds started to fail with the following error when it tried to update my repository from source control.

Source control operation failed: svn: E155000: ‘c:\myRepo\repoSubDirectory’ is already a working copy for a different URL

After banging my head on my keyboard for a while, I finally found out why. I found the following snippet about CCNet 1.2+ releases which shed some light on the problem.

SVN Checkout
As of the CCNet 1.2 release, the SVN provider now supports automatic checkout of source. If the working directory does not contain a .svn folder (or _svn folder), the SVN block will automatically perform a checkout instead of an update. The trunkUrl must be specified for checkout to function.

In Subversion 1.7+ there are no longer .svn files in sub folders of the working directory. Because of this, if you have a <workingDirectory> defined for a folder in your repository other than the root folder Cruise Control thinks it needs to do a checkout rather than an update. This will fail because the directory you’ve specified is already part of a working directory.

In my case, I was able to change the working directory to the root of my repository so that cruise control would correctly update instead of trying to checkout. Does anyone know of a way to get around this so you can continue to use a sub folder in your working directory instead of the root? Another option could be to remove the <trunkUrl> from your ccnet.config so that the checkout feature wont work, but I didn’t actually give this a try.

Hope this helps someone.

1 comment:

Anonymous said...

I entered a Bug at Cruisecontrolnet.org with the Bug #244 for this. Take a look at that webside. Search for E155000!