Overview
SHA1 Hash: | b8cc22ebdf58e37c0ec0fa6ca72bdd77f83d5840 |
---|---|
Date: | 2007-09-24 23:56:25 |
User: | jnc |
Comment: | Merged dhr's todo and ideas update |
Timelines: | ancestors | descendants | both | trunk |
Other Links: | files | ZIP archive | manifest |
Tags And Properties
- branch=trunk inherited from [a28c83647d]
- sym-trunk inherited from [a28c83647d]
Changes
[hide diffs]Modified ideas.txt from [880f1290f0] to [80884fde4d].
@@ -48,110 +48,19 @@ 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 - -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 +Random thoughts: * 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
Modified todo.txt from [18c6921332] to [5e00e8293a].
@@ -18,12 +18,10 @@ * Bug: If the server closes the socket unexpectedly, the fwrite() in http.c:103 throws a signal and kills the child process. fwrite() is not suppose to do this. Need to figure out what is going wrong. - * Bug: pull is ending prematurely. - * Bug: Make sure merge and other commands (check-out) do not try to use a phantom. * Bug: When clone use incorrect http URL, local repo file is still created. @@ -44,27 +42,20 @@ * The ipaddr field of the rcvfrom table is not being set. This field should be the IP address from which information is received for the local repository. So when somebody does a push of new files we record the ipaddr. Or when we do a pull, we record - the ipaddr. + the ipaddr. (I think this has been fixed. Need to test.) * Additional information displayed for the "vinfo" page: + All leaves of this version that are not included in the descendant list. With date, user, comment, and hyperlink. Leaves in the descendant table should be marked as such. See the compute_leaves() function to see how to find all leaves. + Add file diff links to the file change list. - - * Timeline enhanced so that you can specify a range of dates. - - * The /xfer handler (for push, pull, and clone) does not do - delta compression. This results in excess bandwidth usage. - There are some pieces in xfer.c that are sketches of ideas on - how to do delta compression, but nothing has been implemented. * Enhancements to the diff and tkdiff commands in the cli. Allow the entire tree or a subtree to be diffed, not just a single file. Allow diffs against any two arbitrary versions, not just diffs against the current check-out.