Artifact Content
Not logged in

Artifact e0433ea2b17bed5823391261fe6553e61f7f895e

File ideas.txt part of check-in [fd8b28ad87] - New text in "ideas.txt" by drh on 2007-08-26 19:51:35.

Random thoughts:

  *  Changes to manifest to support:
     +  Trees of wiki pages and tickets
     +  The ability to cap or close a branch
     +  See "Extended Manifests" below

  *  Add the concept of "clusters" to speed the transfer of "tips"
     on a sync.

  *  Auxiliary tables:
     +  tip
     +  phantom
     +  mlink
     +  plink
     +  branch
     +  tree

  * Plink.isprim changed to record:
     +  child is the principal descendent of parent. (1)
     +  child is a branch from parent (2)
     +  child uses parent as a merge (0)

  * tree records
     + type  (code, wiki, ticket)
     + name  (for wiki and ticket only)
     + treeid

  * branch records
     + treeid
     + origin_rid
     + origin_time
     + tip_rid
     + tip_time
     + color

  * website can toggle isprim between principal and branch.
     + How to preserve across rebuild.  A new record type?
     + How to share with other repositories
  * isprim guessed using userid of parent and child.  Change
    in id suggests a branch.  Same id suggests principal.
    For a tie, go with the earliest check-in as the principal'

  * Autosync mode
     + Set a preferred remote repository to use as a server
        =  Clone repository is the default
     + On commit, first pull.  If commit baseline is not a tip
       prompt user to cancel or branch.  Default is cancel.
     + Push after commit
     + Automatically pull prior to update.
     + Need an "undo" capability
     + Designed to avoid branching in highly collaborative 
       environments.

  * Archeological webpage improvements:
     + Use a small amount of CSS+javascript on timelines so that
       branching structure is displayed on mouseover.  On mouseover
       of a checkin, highlight other checkins that are direct (non-merge)
       descendents and ancestors of the mouseover checkin.
     + Timeline showing individual branches
     + Timeline shows forks and merges
     + Tags shown on timeline (maybe) and in vinfo (surely).

Extended manifests.
  * normal manifest has:
       C comment
       D date-time
       F* filename uuid
       P uuid ...           -- omitted for first manifest
       R repository-md5sum
       U user-login
       Z manifest-checksum
  * Change the comment on a version:   -- always a leaf except in cluster
       D date-time
       E new-comment
       P uuid              -- baseline whose comment is changed
       U user-login
       Z checksum
       -- most recent wins
  * Wiki edit
       A* name uuid   -- zero or more attachments
       C? comment
       D date-time
       N name         -- name of the wiki page
       P uuid ...     -- omit for new wiki
       U user-login
       W uuid         -- The content file
       Z manifest-cksum
  * Ticket edit
       A* name uuid   -- zero or more attachments
       D date-time
       N name         -- name of the ticket
       P uuid         -- omit for new ticket
       T uuid         -- content of the ticket
       U user-login
       Z manifest-cksum
  * Set or erase a tag    -- most recent date wins
       B* (+|-)tag uuid
       C? comment
       D date-time
       V* (+|-) tag uuid    -- + to set, - to clear.  
       Z manifest-cksum
       -- Must have at least one B or V.
       -- Tag "hidden" means do not sync
       -- Tag "closed" means do not display as a leaf
  * Complete set of cards in a manifest files:
       A filename uuid
       B (+|-)branch-tag uuid
       C comment
       D date-time
       E edited-comment
       F filename uuid
       N name
       P uuid ...
       R repository-md5sum
       T uuid
       U user-login
       V (+|-)version-tag uuid
       W uuid
       Z manifest-checksum