Re: Entity membership John C. Randolph (jcr@totoro.idiom.com)
Wed, 7 Jun 2000 04:37:42 -0700

On Tuesday, June 6, 2000, at 07:56 PM, Jonathan S. Shapiro wrote:

> I definitely wasn't clear.
>
> Entities certainly cannot know the future, and therefore should not have
> pointers into the future. They certainly should know their predecessors.
>
> The question is whether the entity metadata should include the name and
> sequence number of the branch version in which the particular entity was
> created.
>
> >From a purist perspective, my inclination is that the answer should be "no".
> An entity should be pointed *to* by it's originating branch version, but
> should not point back to that version.
>
> Unfortunately, this creates problems for diagnostics.
>
> Is my original question now more clear?

Okay, I think I get you now.

I think that the answer is, you don't need to explicitly store a reference to the common ancestor, since it's trivial to walk the tree from any two related entities and find out what the common ancestor was.

Also, I'm not sure it's at all important to know the common ancestor of corresponding entities on different branches.

So, a "version", or if you will, a "Checkpoint" (to use TeamNet terminology) is able to answer the question "what are the contents of file 'foo' as of your timestamp, in your development sequence."

One thing that I think should be emphasised, should be the ease of remembering versions. In TeamNet, I could trivially freeze a version at any time, and all subsequent editing of my work area would then take place in the new "open" checkpoint.

So, I might actually freeze a version every time through my edit-compile-debug cycle during a day, and then periodically coalesce the five or ten versions I'd made into a single one for the day. (Some guys at TeamOne actually stuck a line in their makefiles to do this every time they built their projects.) This was a very quick operation, since it never involved actually copying any files from my workarea into the baseline (which was really just another workarea.)

-jcr

[objC retain];