----- Original message ----- 
> I think it is equivalent. I was envisioning two tables with the columns
> listed below:
> 
> CommitTracks (was called HistoryUnits)
> - UUID
> - CurrentNode
> 
> CommitTrackAncestry (was called HistoryRelation in my mail)
> - UUID (the commit track UUID)
> - ParentUUID
> - ParentNode (a commit track node id)
> - Branched (boolean)
> - Public (boolean)
> 
> For a normal branch, we have:
> - a valid Parent (UUID + Node)
> - Branched = true 
> - Public = true.
> 
> For a private branch (such as a inner branch a la Nested Versioning), we
> have: - a valid Parent
> - Branched = true 
> - Public = false
> 
> For a new root object (from scratch), we have:
> - no Parent
> - Branched = false
> - Public = true (doesn't really matter in fact)
> 
> For a root object copy, we have:
> - a valid Parent
> - Branched = false
> - Public = true (doesn't really matter in fact)
> 
> For a root object linked as a precise revision, it is the same than a
> private branch: - a valid Parent
> - Branched = true 
> - Public = false.
> 
> We surely need some extra rules such as:
> - you cannot branch a commit track if branched is true
> 
> We probably need an extra table to store infos related to Branches such
> as their names etc.   We might want to move the Public column to this
> table, or introduce a UUID-based owner notion (e.g. an outer document
> owning a inner document branch).
> 
> CommitTrackAncestry is not named CommitTrackGraph because to build the
> entire history graph we would need another table that describes the
> merge points.
> 
> The current limitation I see with this model is that you cannot support
> live links that automatically reflect their root object current branch. 
> It's surely possible to remove this limitation, but to propagate branch
> switches to the related live links doesn't seem like a good idea (too
> hard to predict for the user).

I agree, because the link to a root object should also contain its branch - we 
should never store links to objects in documents that reference the notion of a 
"current branch", otherwise we get the unhelpful behaviour above. 

I don't see how it isn't possible though.

> Let me know if this is close to what you had in mind, and if you see any
> holes in my reasoning…

I can't see any, but I haven't done any serious analysis of it yet.

Chris
_______________________________________________
Etoile-dev mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-dev

Reply via email to