On Tue, Jan 20, 2009 at 9:15 AM, Wendy Smoak <[email protected]> wrote:
> I'm trying to understand how, if a project may build on any agent, > Continuum can determine whether there have been scm changes since the > last time it was built. Here's what I think should happen (scheduled > builds, assuming Always Build and Build Fresh are NOT checked): > > Add project > 1:00pm Build on agent 1, checkout at r500 > 2:00pm Build on agent 2, checkout at r500 <--- no changes, project > should not build > 2:15pm developer makes scm changes > 3:00pm Build on agent 2 update to r501, build because there were changes > 4:00pm Build on agent 1 update to r501 <---- no changes, project > should not build > This is possible, but IMO the master needs to keep track of the revisions so that when agent 1 tries to build project @ 4:00pm it will only update the working copy but it won't build the project. Our initial plan is to have a dumb build agent so all it knows is how to build. When it's a scheduled build, it will always build regardless if there is or there isn't any change at all. We can add the check for whether it should build or not in the next pass. > But I'm not sure how Continuum makes its determination of whether > there have been changes, (even without Distributed Build.) > It first updates the working copy and then set the project's scm result (with scm changes). Project has a one to one relationship with ScmResult. Everytime you update the working copy, it merges the new scm changes with the old scm changes unless it says build fresh. Currently, no scm changes is returned to the master in a distributed build and I'll be working on that next. > This is a bit of a pain to set up and test for, so I'm hoping someone > will reassure me that it will all work fine. :) > > -- > Wendy >
