Artifact Content
Not logged in

Artifact 2f6d8979445e4b931cc04f02590b37bd78a62809

File todo.txt part of check-in [71ed18cc4b] - Do not attempt to verify phantoms. Set the default max message size at 500K instead of 1MB. Updates to the todo list. by drh on 2007-08-01 02:03:31.

Things to work on:

 *  Use the wiki_convert() routine to render comments and other text
    on web pages.

 *  If the server does not have write permission on the database
    file, or on the directory containing the database file (and 
    it is thus unable to update database because it cannot create
    a rollback journal) then it currently fails silently on a push.
    It needs to return a helpful error.

 *  When constructing a new manifest (see the commit_cmd function
    in checkin.c, near line 303) make an attempt to PGP clearsign
    the manifest before checking it in.  There will need to be
    configuration parameters for the PGP (or more likely GPG)
    command to do the actual signing.  Write the manifest to
    a temp file, clearsign, read it back in, verify that it is
    still parsable by manifest_parse(), then continue with the
    check-in.

 *  The "leaves ?UUID?" command displays all leaf versions for the
    version UUID or for the current version if UUID is omitted.  If
    UUID is itself a leaf, it would be more helpful to display a
    message to that effect:  "<uuid> is itself a leaf"

 *  We need a command to show other branches - leaves of the root
    which are not leaves of the indicated node.

 *  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.

 *  Additional information displayed for the "vinfo" page:

     +  The comment and user for this version (available in
        the event table).
     +  All decendents of this version (together with date,
        user, comment, and hyperlink to the vinfo page) for
        N generations.  N to be determined.  Perhaps configurable
        using db_get_int()/db_set_int().  Note: decendents can
        be found using the plink table.
     +  All leaves of this version that are not included in the
        decendent list.  With date, user, comment, and hyperlink.
        Leaves in the decendent table should be marked as such.
        See the compute_leaves() function to see how to find all
        leaves.
     +  All ancestors of the current version with date, user,
        comment, hyperlink.  M generations back, where M is
        to be determined.
     +  List of files added or modified by this version.
        Information available in the mlink table.  Hyperlinks to
        the finfo page for each file.
     +  Hyperlinks to diff all files in this version against any
        of the named decendents or ancestors.  The unified_diff()
        function will compute a unified diff given to file blobs.
     +  Add a link that will download a ZIP archive containing the
        complete baseline.  Use zip_of_baseline() function in 
        zip.c to construct the ZIP archive.

 *  A new webpage: "finfo"  Information about a particular file
    given its name.

     +  All historical changes to this file with version number,
        user, and comment, and hyperlink to the vinfo page for
        the version.  Information available from the minfo table.
     +  Hyperlinks for diffing consecutive versions of the file.

 *  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 code 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.  Allow 
    configuration options to replace tkdiff with some other
    visual differ of the users choice.

 *  Ticketing interface (expand this bullet)

     +  Create new tickets as files in the file hierarchy
     +  Append remarks to a ticket
     +  Add attachments to a ticket
     +  Change attributes of a ticket
     +  Delete tickets that are no longer current.  (The old
        content is still accessible, the ticket is just not in
        the current check-out.)
     +  Server setup to define the allowed attributes and
        attribute values for tickets
     +  Permanently remove malicious edits and/or attachments
        such as wiki-spam or warez.  (Content is no longer accessible.)
     +  View a history of all changes to a ticket
     +  Generate reports over all tickets
     +  Generate reports over all tickets as they existed for
        a chosen point in time and space.
     +  Do full text search against the text in any single ticket or
        across the current versions of all tickets, or across all current
        and historical versions of all tickets.

 *  Wiki interface (expand this bullet)

     +  Create new wiki pages
     +  Designate a single wiki page as the home page for the www interface
     +  Designate wiki pages as read-only, append-only, or read/write.
     +  Append comments to a wiki page
     +  Add attachments (such as GIF images) to a wiki page
     +  Change the content of a wiki page
     +  Delete obsolete wiki pages.  (Old content is still accessible,
        the page is just not on the current list of pages.)
     +  Permanently remove malicious edits and/or attachments
        such as wiki-spam or warez.  (Old content is no longer accessible.)
     +  Add nofollow on external links added by unprivileged
        users when the link is less than N hours old.
     +  Show the complete history of a single wiki page
     +  Provide the ability to diff two versions of a wiki page
     +  Show a listing of all wiki pages, both current and deleted
     +  Do a full-text search against current versions of all wiki pages
     +  Do a full-text search against all historical versions of a single
        wiki page
     +  Do a full-text search against all historical versions of all
        wiki pages

 *  Full-text search against check-in comments and diffs of each
    check-in.

 *  Ability to check-in some subset of changes to the tree instead
    of having to check in all changes.

 *  Add a "revert" command that will undo all changes to a file
    or files in the current check-out - restoring the files back
    to their original check-out state.

 *  Add an "annotate" command in both the cli and the www interface
    that will show line-by-line the most recent changes to every line
    in the file.

 *  Browse the file hierarchy, similar to the "Browse" feature in
    CVSTrac.

 *  Add the ability to override check-in comments.  It is not possible
    to change the comment in the check-in itself due to the cryptographic
    hash.  But you can add a new record to the repository that overloads
    a check-in comment with a new comment.  Comment changes should be
    GPG clearsigned at the very least.  Comment changes only apply if
    the user who made the change has the right permissions.

 *  New cli commands: "deconstruct" and "reconstruct".  The deconstruct
    command populates an indicated directory with copies of all files
    contained within the repository.  Files are named aaa/bbbbbbb where
    aaa is the first 3 characters of the uuid and bbbbbb is the
    remaining 37 characters.  reconstruct builds a new repository
    containing all files in an indicated directory.  When reconstructing,
    some information is lost: project-code, server-code, users.  
    Just make up a new project-code.  

 *  Get a build working for win32.  Perhaps use cygwin.  Or omit
    the server component from win32 (to eliminate the need for fork()).

 *  Make the interface to fossil look pretty and be customizable so
    that other people will be attracted to it, will take over maintenance
    of it, and we can eventually move on to other things.