At our office we made build breaking a beerable offence, payable as a round
of drinks to the entire development team. Nowadays NOBODY breaks the build.

-----Original Message-----
From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
Sent: Friday, 7 February 2003 8:56 AM
To: Struts Users Mailing List
Subject: RE: [OT] how do people work in project with one CVS server




On Thu, 6 Feb 2003, ROSSEL Olivier wrote:

>
> Another question i have.
> How do people using Eclipse or whatever handle the fact that CVS don't
lock
> files, ie. allows for multiple simultaneous edit/save ?
>

You can actually configure CVS to "lock" the files (allowing only one
person to check a file out for modification at a time), but most CVS shops
I know would find that hopelessly restrictive.  CVS also has facilities to
merge changes (if it can) if conflicts occur.

Struts itself, like all Apache software, is stored in a shared CVS
repository (you can even get anonymous CVS access to it by following the
instructions at <http://jakarta.apache.org/site/cvsindex.html>).  There
are many people that have commit access, and we operate with no locking --
yet there are very very few conflicts.  Even when there are, they tend to
be pretty easy to resolve.

A couple of "development culture" issues help this to some degree:

* We tend towards many relatively small commits, targeted at a
  particular change (fix a single bug report, for example),
  so you tend to touch relatively small numbers of files,
  and touch the minimum number of lines in each of those
  files.  (This rule also helps keep the commit log that CVS
  keeps for you more useful than it would be with, say,
  all the changes for one day lumped in to one commit.)

* We're often working on different aspects of the same
  application, so we tend to be working on different
  files anyway.  (Good factoring of your code into small
  reusable pieces helps too :-).

* When there are large scale refactorings, and/or we're about
  to do a release, we talk with each other and pause until the
  large change is completed.

* We have a basic agreement with ourselves that "thou shall not
  break the build" -- you need to ensure that the entire package
  compiles (for Struts, I use "ant clean dist") with your modified
  code, before you check it in.

* We tend to keep our local copies of the files refreshed (I do
  "cvs update -dP" while my morning coffee is perking) so that,
  when we're changing something, we're always starting from the
  most recent version of the file.

* We use the HEAD branch for the up-to-the-minute development (this
  is where the nightly builds come from, too), and create a branch
  for each major release so that you can go back and do maintenance
  on it.  There are some CVS tools for merging changes from one branch
  back in to the other, if you find yourself making changes that need
  to be ported to multiple versions.

Every development team has to work out the "rules of the road" for shared
resources.  But these are some of the things that have helped us build
Struts.

Craig


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to