continuum-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Edward Gruber <cgru...@israfil.net>
Subject Re: In distributed build, how does Continuum decide whether there have been scm changes?
Date Fri, 23 Jan 2009 02:19:28 GMT
The problem with Wendy's logic is that it works really well for SVN or  
P4 with atomic commits, but not so much for CVS.  On the other hand,  
the build agent checking its local workspace isn't great, because  
another agent may have built.  An option would be to call a timestamp  
as of the build scheduled time, and determine if there have been  
changes between the previous build's timestamp and the current  
timestamp.  On most atomic commit systems this is translated  
immediately into a revision number, but for something like CVS, each  
client can determine whether changes occur between TimeA and TimeB.   
Or maybe use revision and fall back on timestamps for non-atomic  
commit systems.

A lot of what I said is stated without really solid understanding of  
the continuum SCM infrastructure, so I'm not sure if the features are  
there, but they should be in the underlying SCM system being used.

Christian.

On 22-Jan-09, at 21:07 , Marica Tan wrote:

> On Tue, Jan 20, 2009 at 9:15 AM, Wendy Smoak <wsmoak@gmail.com> 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
>>

Christian E. Gruber - President / Senior Consultant
Isráfíl Consulting Services Corporation
email:  cgruber@israfil.net
mobile: +1 (289) 221-9839
web:    http://www.israfil.net/
"...keenness of understanding is due to keenness of vision."








Mime
View raw message