Differences From:
File
ideas.txt
part of check-in
[e1c1877c99]
- Sync using clusters appears to work. More testing is needed before we go
live.
by
drh on
2007-09-08 16:01:28.
Also file
ideas.txt
part of check-in
[bbcb6326c9]
- Pulled in the navbar and timeline changes.
by
aku on
2007-09-17 00:58:51.
[view]
To:
File
ideas.txt
part of check-in
[2ab2db0bd3]
- The control file parser now reads ticket changes and wiki pages.
by
drh on
2007-10-05 13:03:22.
Also file
ideas.txt
part of check-in
[d0305b305a]
- Merged mainline into my branch to get the newest application.
by
aku on
2007-12-05 08:07:46.
[view]
@@ -1,140 +1,128 @@
+
Possible ticket file format:
- "Ticket"
- title: TEXT
- ticketid: TEXT
- exists-in: BASELINE -- 0 or more
- fixed-in: BASELINE -- 0 or more
- tag: TAG -- 0 or more
- created: DATETIME
- attachment: FILENAME DESCRIPTION
- parent: UUID*
- derived-from: TICKET-FILENAME
- description: MULTILINE-TEXT
- remarks: MULTILINE-TEXT
-
- * Things handles with tags:
- created-by
- assigned-to
- priority
- severity
- target-release
- status
- resolution
- type
- subsystem
-
-Wiki header format:
- "WikiPage"
- parent: UUID*
- title: TEXT
- pagename: TEXT
- mode: (readonly|appendonly|readwrite)
- attachment: UUID name description
-
- * Header ends with a blank line. wiki content follows.
-
-Cluster format:
-
- M+ uuid
- Z manifest-cksum
-
- * Cluster generated in server mode only.
- * Embargo cluster that reference phantoms or other embargoed clusters.
- * Never send or ihave an embargoed cluster
-
-New sync algorithm based on clusters:
-
- * Keep a table of unclustered artifacts. Strive to keep this table
- less than 100 entries.
- * Client sends content of unclustered table as ihaves to server
- * Server builds a new cluster if size of cluster table >100.
- * Server sends unclustered table to client
- * Server sends gimme for all unknown ihave received from client
- * Client sends gimme for all unknown ihave received from server
- * Previous two steps repeat until no more gimmes
-
-Details of new push algorithm:
-
- * Table "unsent" contains all files never pushed
- * TEMP table "wanted" contains files the server does not have
- Loop:
- * Client sends login and "push" record
- * Client sends file message for all files in unsent and removes
- those files from the table.
- * Client sends file message for all files in wanted.
- * Client sends ihave messages for each entry in unclustered
- ------
- * Server receives file message
- * Server creates phantoms for unknown ihaves
- * Server sends gimme messages for all phantoms
- ------
- * Client clears its unsent table
- * For each gimme message add an entry to wanted
- * Halt if the wanted table is empty
-
-Details on new pull algorithm:
-
- Loop:
- * Client sends login and "pull" record
- * Client sends "prior" message with repository id and max record number
- * Client sends "gimme" for each phantom
- --------
- * Server creates new clusters to get unclustered size below 100
- * If there is "prior" message with repository id that matches this
- server, then send file messages for all record ids greater than
- prior
- * Server sends ihave messages for each entry in unclustered
- * Server sends maxrid message
- --------
- * Client receives file records
- * Client creates phantoms for unknown ihaves
- * If no phantoms exist, record maxrid for the server and halt
-
-Need a dephantomize algorithm
-
-
-Auxiliary tables needed for new sync algorithm:
-
- * unsent: files that have never been sent to another repository
- * unclustered: non-phantom files not mentioned by a cluster
+ A uuid name description
+ D datetime
+ J field value
+ K uuid
+ U user
+ Z md5sum
+
+FIELDs:
+
+ comment cumulative text
+ title text
+ assignedto text
+ status enum
+ resolution enum
+ subsystem enum
+ type enum
+ priority enum
+ severity enum
+ deferuntil datetime
+ duedate datetime
+ derivedfrom add or subtract uuid
+ relatedversions add or subtract associate with manifest
+ presentin add or subtract uuid
+ fixedin add or subtract uuid
+
+Other table columns:
+ origintime
+ lastchange
+
+
+Field Types:
+
+ text width height
+ enum width valuelist
+ datetime width
+ cumulative-text width height
+ set-of-uuid width
+ set-of-checkin width
+
+Tables:
+
+ tktrid(rid, tkid, mtime); index(tkid, mtime);
+ ticket(tkid, tkuuid UNIQUE, starttime, lastmod, ...);
+ tktfield(fieldname UNIQUE, type, width, other);
+ tktxref(tkid, mid); index(tkid); index(mid);
+
+Tktformat in the config table.
+
+ * Three pages: creation, display, and edit
+ * Separate global and local versions of each page. Local overwrites
+ global if it exists.
+ * HTML
+ * [[field]] to substitute the appropriate form or display element
+
+Ticket Configuraiton File:
+
+ * Format:
+ ticket-configuration
+ field <fieldname> <type> <param> ...
+ template <type> <delimiter>
+ <text>
+ * Each repository selects a single ticket config for its own use.
+ * Rescan all tickets following any config change
+ * Use the ticket-configuration tag must be on the file
+
+Todo:
+
+ * Configuration file parser
+ + tkt-new-template
+ + tkt-view-template
+ + tkt-edit-template
+ + Reconstruct the ticket table schema
+ + Repopulate tktfield
+ * Ticket control file parser
+ + Create ticket entry if necessary
+ + Update fields. Ignore unrecognized fields.
+ * Transfer tkt control info to ticket table
+ * Setup pages for selecting and editing ticket configuration
+ * Ticket display
+ * New ticket creation display
+ * Ticket change screen
+ * Ticket query screens
+
+
+------------------------------------------------------------------------
+Change to wiki:
+
+ A uuid filename description
+ D datetime
+ P uuid ...
+ U user
+ W size \n text \n
+ Z cksum
+
+Hyperlinks:
+
+ [lowercasehex] /info/lowercasehex
+ [attachment.gif] inline image
+ [tagname] /info/tagname
+ [wikipagename] /wiki/wikipagename
+ [/internal/page] /internal/page
+ [http:...] external link
+
+Markup:
+
+ blank-line paragraph break
+ _*__ bullet
+ __ indentation
+ _#.__ enumeration
+ *text* bold
+ _text_ italic
+
+
+------------------------------------------------------------------------
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
@@ -142,17 +130,20 @@
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.
+ * Notes:
+ + Designed to avoid branching in highly collaborative
+ environments.
+ * Outstanding:
+ + On commit, first pull. If commit baseline is not a tip
+ prompt user to cancel or branch. Default is cancel.
+ + Need an "undo" capability
+ * Done:
+ * Set a preferred remote repository to use as a server
+ = Clone repository is the default
+ * Push after commit
+ * Automatically pull prior to update.
* Archeological webpage improvements:
+ Use a small amount of CSS+javascript on timelines so that
branching structure is displayed on mouseover. On mouseover
@@ -185,15 +176,14 @@
Z manifest-checksum
* Accessory:
A uuid|* attachment-uuid description
- B (+|-)branchtag uuid
D date-time
E uuid new-comment
G uuid appended-remark
S repositoryid serial-number
- U userid
- V (+|-)versiontag uuid
+ T (+|-)tag uuid
+ U userid
X uuid-to-surpress
Z this-file-checksum
* Change the comment on a version: -- always a leaf except in cluster
@@ -226,20 +216,22 @@
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
+ -- Branch tag "hidden" means do not sync
+ -- Version tag "closed" means do not display as a leaf
* A cluster
M+ uuid
Z manifest-cksum
- * Complete set of cards in a manifest files:
+
+ * Complete set of cards in a control file:
A filename uuid
B (+|-)branch-tag uuid
C comment
D date-time
- E edited-comment
+ E uuid edited-comment
F filename uuid
+ M uuid
N name
P uuid ...
R repository-md5sum
T uuid