[Zope-CMF] Revisions & CMF
Shane Hathaway
shane@digicool.com
Thu, 31 May 2001 09:58:37 -0400 (EDT)
On Thu, 31 May 2001, Toby Dickenson wrote:
> On Wed, 30 May 2001 11:04:49 -0400, Shane Hathaway
> <shane@digicool.com> wrote:
>
> >A lot of the ideas presented are actually more alike than it sounds at
> >first. A future version of a document is really the same as a CVS
> >"branch". No, we might not need diffs and merges, but we do need the
> >concepts that are fundamental to CVS.
> >
> >A Zope "Version" object is also equivalent to a CVS branch. However,
> >FileStorage, the default implementation of the ZODB storage layer, is
> >currently hardwired to disallow concurrent branches. I don't know
> >whether BSDDB3 storage makes the same assumption.
>
> An observation, and Im not sure whether or not it is obvious....
>
> You cant allow concurrent branches without some CVS-alike diffs and
> merges. (unless your branches will forever remain separate)
That's basically true. I was thinking of implementing a lower quality of
service where branches would just stomp on the trunk when merged, but the
workflow would enforce a policy that makes it impossible to change the
published copy so it wouldn't matter.
Tres has been advocating a different way to look at this and I'm coming to
see the advantages. If we could just "tag" specific revisions of a
document and have those revisions show up as the published version, we'd
provide what everyone seems to be asking for. No concurrency involved.
Now, modifying that idea a bit, Zope versions could provide this kind of
behavior. If there are only two possible tags, "published" and "future",
then "future" is just like a Zope version. Zope versions are hardwired to
prevent concurrent modifications. Each object would have its own logical
version. We could provide access to the future version via URL rather
than a cookie.
I suppose the principles of Extreme Programming would say this is the
right thing to do--it provides exactly what is asked for and nothing more,
it has a minimal impact on the codebase, and it would be reliable.
Shane