[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Continuous Integration and CVS

From: Paul Sander
Subject: Re: Continuous Integration and CVS
Date: Wed, 26 Apr 2006 10:35:20 -0700

On Apr 26, 2006, at 9:16 AM, Jim Hyslop wrote:

Hash: SHA1

Arthur Barrett wrote:
Ben Rady,
Therefore, if Anthill creates a tag from it's
working directory using 'cvs tag', the build
artifacts created from the build can be perfectly
reproduced by checking out that tag.

Yes - in fact I avoid rtag because unless you can lock all the users out of the server there is potential to rtag a version you didn't intend to
(because someone has committed a change).

I concur, Arthur. The safest way to mark a snapshot as "correct"
is to do a fresh checkout and 'cvs tag'.

My own preference is to use a build system that is driven from the CM
system (ie: build when changes are merged onto the build branch).
I sometimes wonder whether my style of working would screw this up :=)
When I check in changes, sometimes I separate the commits into several
commits, based on the specific changes made (all changes are usually
related in some way). If the automated system kicked in after the first
commit, the build may fail. Do you include some kind of delay to see if
there's another checkin within, say, two minutes of the first?

This is one of the reasons why the submit/assemble method (discussed many times in this forum) is successful. It doesn't constrain the developers' commits, and it requires the developer to declare that code really is ready for prime time. Submitting is quick, and once done there's a queue of changes waiting for integration.

The mechanism can be easily built with atomic transactions, thus eliminating the sort of race condition that Jim describes. 'Course, there's still the issue that the developers must make complete submissions, but there are ways to assure that.

It also has the benefit that submissions can be backed out in the event of a mistake. So depending on the goal of the subsequent integration (compilation vs. compilation without errors, for example), it's possible to automate a solution that can guarantee a high quality output.

Paul Sander       | "To do two things at once is to do neither"
address@hidden | Publilius Syrus, Roman philosopher, 100 B.C.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]