[Zope-dev] Re: source control

Andrew M. Kuchling akuchlin@mems-exchange.org
Thu, 23 Sep 1999 16:30:59 -0400 (EDT)


Jonothan Farr writes:
>I am considering investing the considerable time and effort to integrate CVS
>version control into Zope. I am very interested in knowing if anyone else is
>considering or already working on such a product.

The lack of source control is a problem to me, too.  In our workgroup,
the source code is all in one CVS tree, and the developers are all
mailed checkin messages.  This is useful because it lets us keep track
of what others are doing; if I notice checkins to a package such as
mems.core, and my code uses mems.core, I know whether I should update
immediately because of a critical bugfix, or avoid updating to avoid
breaking my code at an inconvenient time, or to change my affected
code.

>I would also like to encourage more discussion about source control, as I
>also see this as a sizeable barrier to some people's acceptance of Zope.

What should Zope source code control look like?  The ZODB's versioning
is too fine-grained, because every little change is stored as a
separate version.  What you really want is to draw a circle around a
given set of DTML + SQL queries + other objects, and store them as a
snapshot.  (ExternalMethods are tricky, because they're in source
files outside the ZODB.)  

Vague speculation, at least for CVS support: imagine having a 'CVS
checkin' tab on a folder.  Clicking it would loop over the contents of
the folder, exporting each object in the XML format and writing it to
some preconfigured CVS working directory.  After writing the files, a
standard 'cvs commit' is done.  That's terribly crude, and running
'cvs diff' will require reading XML to interpret the changes, but it's
a start.  

Another idea: have a oldversions.fs which will contain older versions, 
so you don't bloat the main Data.fs with them.  Checking in a new
version then consists of copying it to the ZODB in oldversions.fs and
giving it an identifier.  Now add a Zope-based interface for browsing
through old versions and diff'ing them.  

-- 
A.M. Kuchling			http://starship.python.net/crew/amk/
    "It bombards atoms with subatomic particles."
    "Why?"
    -- Dr. Lawrence and The Doctor, in "The Silurians"