views:

355

answers:

1

So I have set up the following for my PHP project:

  • A Git repository with all the code.
  • An instance of Cruisecontrol with PhpUnderControl running on top of it.

I created a new project in the cruisecontrol project directory and set up a poller to check changes on the git repo every 2 minutes. I have 2 projects running in this Cruisecontrol instance, and the first one I set up works just fine.

The issue I am having with the Platform project looks like this in the error logs:

2010-02-04 06:07:27,076 [Thread-14061] INFO  Project           - Project platform:  bootstrapping  
2010-02-04 06:07:27,077 [Thread-14061] INFO  ProjectController - platform Controller: build progress event: bootstrapping  
2010-02-04 06:07:27,496 [Thread-14061] INFO  GitBootstrapper   - Already up-to-date.  
2010-02-04 06:07:27,500 [Thread-14061] INFO  Project           - Project platform:  checking for modifications  
2010-02-04 06:07:27,500 [Thread-14061] INFO  ProjectController - platform Controller: build progress event: checking for modifications  
2010-02-04 06:07:27,583 [Thread-14063] WARN  Git               - warning: Log for '' only goes back to Tue, 26 Jan 2010 13:43:11 -0500.  
2010-02-04 06:07:27,584 [Thread-14063] WARN  Git               - fatal: Invalid revision range @{ 1264038932}..@{ 1265281647}  
2010-02-04 06:07:27,584 [Thread-14061] INFO  Project           - Project platform:  No modifications found, build not necessary.  
2010-02-04 06:07:27,584 [Thread-14061] INFO  Project           - Project platform:  idle  
2010-02-04 06:07:27,584 [Thread-14061] INFO  ProjectController - platform Controller: build progress event: idle

The strange thing here is that when I check the project directory, the code base gets updated. (I tested with a few small commits in my working directory.) The problem is that this never runs any of the other build processes since Git errors out.

If I go to the projects/platform directory directly and do a git pull, it works fine. Doing an ant build from the project directory also works just fine.

Here are the relevant config files:

<project name="platform" buildafterfailed="false">
    <plugin name="git" classname="net.sourceforge.cruisecontrol.sourcecontrols.Git" />

    <modificationset quietperiod="60">
        <git localWorkingCopy="projects/${project.name}/" />
    </modificationset>

    <bootstrappers>
        <gitbootstrapper localWorkingCopy="projects/${project.name}/" />
    </bootstrappers>

    <schedule interval="120">
        <ant antscript="/usr/bin/ant" buildfile="projects/${project.name}/build.xml" />
    </schedule>

    <listeners>
        <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
    </listeners>

    <log dir="logs/${project.name}">
        <merge dir="projects/${project.name}/build/logs/" />
    </log>

    <publishers>
        <artifactspublisher dir="projects/${project.name}/build/api"
                            dest="artifacts/${project.name}"
                            subdirectory="api"/>
        <artifactspublisher dir="projects/${project.name}/build/coverage"
                            dest="artifacts/${project.name}"
                            subdirectory="coverage"/>
        <execute command="phpuc graph logs/${project.name} artifacts/${project.name}"/>
        <execute command="phpcb 
                          --log projects/${project.name}/build/logs
                          --source projects/${project.name}/lib/model
                          --ouput projects/${project.name}/build/php-code-browser" />
        <artifactspublisher dir="projects/${project.name}/build/php-code-browser"
                            dest="artifacts/${project.name}"
                            subdirectory="php-code-browser" />
    </publishers>
</project>

My searches on the git error haven't given me any good insight, so hopefully someone here knows!

+1  A: 

It looks like there is no branch set for git to checkout. I don't know how to fix that right away, but that might be the direction to go.

It isn't the checkout that is failing, it is the bootstrapper that is failing. If I do a git pull from the directory, it works just fine.
alex
But the warning definitely indicates that it's attempting to look at the reflog for a ref called '' (empty string). The first line explicitly shows that, and the second does implicitly - those `@{date}` bits should really be `branch@{date}` (which to git means "the position of branch on this date"). Definitely a configuration problem, not a git problem. Can't expect git to work if you give it the empty string for a branch name!
Jefromi
Don't know if alex is still watching this, but really, there's not enough information here to say much more than this (unless someone's very familiar with phpundercontrol). The most helpful way to approach debugging would probably be to get it to log the exact git commands it's executing, and trace back where it's getting the branch to give to the command (since it's giving it nothing).
Jefromi