Issue checking out CVS and Mercurial repositories

This ended up being a long post, apologies in advance.

I'm hitting an issue when checking out modules for a build configuration on the agent in TeamCity 5.1.1.  All except for one module is in CVS.  The other is a Mercurial repository.  I'm not certain if my issue is related to mixing VCS types or with the way the CVS modules are configured (I'm leaning towards a little of both).  When checking out the build log has the following (I've modified the module names, but everything else is from the build log):

[12:11:55]: Checkout directory:  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf
[12:11:55]: Updating sources: Agent side checkout...
[12:11:55]: [Updating sources: Agent side  checkout...] Will perform clean checkout. Reason: Checkout directory is  empty or doesn't exist
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf/module1
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf/module2
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf/module3
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf/module4
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf/module5
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf/module6
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf/module7
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf/module8
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf/module9
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf
[12:11:55]: [Updating sources: Agent side  checkout...] Cleaning  /scratch/local/cschmidt/TeamCity/buildAgent/work/c9443bba13829acf/hg-module
[12:11:55]: [Updating sources: Agent side  checkout...] VCS Root: module10
[12:11:55]: [VCS Root: module10] revision:  2010/05/19 11:25:38 -0500
[12:11:55]: [Updating  sources: Agent side checkout...] Failed to perform checkout on  agent: Checkout directory is not empty but it does not contain "CVS"  directories. Update is not possible.

I have configured to check out on the agent and do a clean build.  Unselecting the 'clean build' option results in the same outcome.  There are some weird things that I noticed with 'module10' in other build configurations.  I am forced to make a checkout rule of +:.=>., which doesn't seem right.  If I do not include a rule, the module's contents are checked out in the working directory.  If I try +:.=>module10, I get a working directory with a module10 directory inside of another module10 directory.  I was only able to get it to work with the current directory to current directory configuration.  I think this is because of the way that the module is defined.  It's an alias of many of our dependencies.  The following is from the CVSROOT modules file:

module10     -a ant_1_7_1                   tomcat_6_0_18           jaxp_1_3 \
                       jaf_1_0_2 \
                       db_4_2_52                vbroker_7_0 \
                       flex_3_2_0               flexunit_0_9 \
                       cairngorm_2_2_1          flexlib_2_4 \
                       mockas3_0_1              licenses_1_0_0

Each of these entries is in turn defined as:

ant_1_7_1           -d module10/ant1.7.1 dev/module10/ant1.7.1

I realize this isn't the best configuration for CVS.  We have been moving most of our dependencies into ivy and are transitioning to use Mercurial for our source control.  Unfortunately, we are in a half-way state where we still need to support some of the older way we stored information.

I changed the checkout type to be on the server side, but encountered a different problem.  When checking out via the server, the contents of module10 have directories like ant_1_7_1.  When doing a regular checkout with CVS using the module10 alias, the directories normally come out like ant1.7.1 (the configuration defined in the secondary entry listed above).  So I'm somewhat stuck.  I would like to check out on the agent if possible anyway, because the build may eventually need to commit back into the Mercurial repository in the future.

I'm also a bit confused as this only is happening when checking out the Mercurial repository.  I've tried to move the order of the VCS roots in the configuration around, but I get the same error message (the error is in the same order too, it doesn't seem to depend on the order of the VCS roots in the configuration).

Is there something else I can do to have the modules coexist?  For testing, I'm not checking out 'module10', but will need to when we start using TeamCity for our regular builds.



Comment actions Permalink

Is it possible to send your CVS modules file to teamcity-feedback[at] In this case it will be easier to reproduce this bug on our side.

Comment actions Permalink

Sent, thanks Pavel.

- Chris

Comment actions Permalink

It seems the issue is a bit complicated. There is definitely a bug if server side checkout is used, but in case of agent side checkout the problem needs more investigation. Please submit a bug report to our tracker, if possible, with modules file sample.

Comment actions Permalink

Thanks.  I've opened issue related to this problem.  In the short term, do you know of a different method/workaround to checkout the module?  We are using a pre-checked out version currently, but once it's shared by many build configurations that could be problematic.


Please sign in to leave a comment.