Changes On Branch wolfgangHelpCmd
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch wolfgangHelpCmd Excluding Merge-Ins

This is equivalent to a diff from 7954ccba68 to f88368742d

2010-10-26
12:51
Merge the delta-manifest enhancement into the trunk. check-in: d13054ce84 user: drh tags: trunk
2010-10-22
01:04
Add some explanatory text to the update command to make it easier for new users to learn fossil. check-in: 858940c68e user: bcsmith tags: ui-improvements
2010-10-17
16:37
merge from old hook branch check-in: 9cf288de27 user: wolfgang tags: StvPrivateHook2
2010-10-16
19:07
PellesC doesn't have pgmptr, update Makefile Leaf check-in: f88368742d user: wolfgang tags: wolfgangHelpCmd
17:33
merge from trunk check-in: 586b0eb144 user: wolfgang tags: wolfgangHelpCmd
16:32
Bring over the latest bug fixes from trunk. check-in: b2175857cc user: drh tags: experimental
16:24
Do not attempt to parse control artifacts that do not end with a '\n' character. Ticket [be56c89def7f86bcbd] check-in: 7954ccba68 user: drh tags: trunk
12:13
Do not free memory not obtained from malloc in the "fossil diff" command. Ticket [38d7bb8cf044219c2eff8]. check-in: ddb975e2be user: drh tags: trunk

Changes to src/add.c.

   269    269         blob_reset(&pathname);
   270    270       }
   271    271       free(zName);
   272    272     }
   273    273     db_multi_exec("DELETE FROM vfile WHERE deleted AND rid=0");
   274    274     db_end_transaction(0);
   275    275   }
          276  +
          277  +/*
          278  +** COMMAND: addremove ?--dotfiles? ?--ignore GLOBPATTERN?
          279  +**
          280  +** Usage: %fossil addremove
          281  +**
          282  +** If used in a checkout, the current checkout file tree is synchronized
          283  +** with the repository:
          284  +**  * all files, existing in the file tree but not in the repository
          285  +**    (files displayed using the <a>extra</a> command)
          286  +**    are added to the repository - see also <a>add</a>
          287  +**  * all files, existing in the repository, not existing in the file tree
          288  +**    (files displayed as MISSING using the <a>status</a> command)
          289  +**    are removed from the repository - see also <a>rm</a>
          290  +** The command does not <a>commit</a>!
          291  +**
          292  +** This command can be used to track third party software.
          293  +*/
          294  +void import_cmd(void){
          295  +  Blob path;
          296  +  const char *zIgnoreFlag = find_option("ignore",0,1);
          297  +  int allFlag = find_option("dotfiles",0,0)!=0;
          298  +  int n;
          299  +  Stmt q;
          300  +  int vid;
          301  +  Blob repo;
          302  +  int addons = 0;
          303  +  int deletes = 0;
          304  +
          305  +  if( zIgnoreFlag==0 ){
          306  +    zIgnoreFlag = db_get("ignore-glob", 0);
          307  +  }
          308  +  db_must_be_within_tree();
          309  +  vid = db_lget_int("checkout",0);
          310  +  if( vid==0 ){
          311  +    fossil_panic("no checkout to add to");
          312  +  }
          313  +  db_begin_transaction();
          314  +  db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY)");
          315  +  n = strlen(g.zLocalRoot);
          316  +  blob_init(&path, g.zLocalRoot, n-1);
          317  +  /* now we read the complete file structure into a temp table */
          318  +  vfile_scan(0, &path, blob_size(&path), allFlag);
          319  +  if( file_tree_name(g.zRepositoryName, &repo, 0) ){
          320  +    db_multi_exec("DELETE FROM sfile WHERE x=%B", &repo);
          321  +  }
          322  +  printf("importing checkout root '%s'\ninto repository '%s':\n",
          323  +          g.zLocalRoot,g.zRepositoryName);
          324  +  /* step 1: search for extra files */
          325  +  db_prepare(&q, 
          326  +      "SELECT x, %Q || x FROM sfile"
          327  +      " WHERE x NOT IN ('manifest','manifest.uuid','_FOSSIL_',"
          328  +                       "'_FOSSIL_-journal','.fos','.fos-journal',"
          329  +                       "'_FOSSIL_-wal','_FOSSIL_-shm','.fos-wal',"
          330  +                       "'.fos-shm')"
          331  +      "   AND NOT %s"
          332  +      " ORDER BY 1",
          333  +      g.zLocalRoot,
          334  +      glob_expr("x", zIgnoreFlag)
          335  +  );
          336  +  while( db_step(&q)==SQLITE_ROW ){
          337  +    Blob omit;
          338  +
          339  +    blob_zero(&omit);
          340  +    add_one_file(db_column_text(&q, 1), vid, &omit);
          341  +    addons++;
          342  +  }
          343  +  db_finalize(&q);
          344  +  /* step 2: search for missing files */
          345  +  db_prepare(&q, 
          346  +      "SELECT pathname,%Q || pathname,deleted FROM vfile"
          347  +      " WHERE deleted!=1"
          348  +      " ORDER BY 1",
          349  +      g.zLocalRoot
          350  +  );
          351  +  while( db_step(&q)==SQLITE_ROW ){
          352  +    const char * zFile;
          353  +    const char * zPath;
          354  +
          355  +    zFile = db_column_text(&q, 0);
          356  +    zPath = db_column_text(&q, 1);
          357  +    if( !file_isfile(zPath) ){
          358  +      db_multi_exec("UPDATE vfile SET deleted=1 WHERE pathname=%Q", zFile);
          359  +      printf("DELETED  %s\n", zFile);
          360  +      deletes--;
          361  +    }
          362  +  }
          363  +  db_finalize(&q);
          364  +  /* show cmmand summary */
          365  +  printf("added %d files, deleted %d files\n",addons,deletes);
          366  +
          367  +  db_end_transaction(0);
          368  +}
   276    369   
   277    370   /*
   278    371   ** Rename a single file.
   279    372   **
   280    373   ** The original name of the file is zOrig.  The new filename is zNew.
   281    374   */
   282    375   static void mv_one_file(int vid, const char *zOrig, const char *zNew){
................................................................................
   293    386   **
   294    387   ** Usage: %fossil mv|rename OLDNAME NEWNAME
   295    388   **    or: %fossil mv|rename OLDNAME... DIR
   296    389   **
   297    390   ** Move or rename one or more files within the tree
   298    391   **
   299    392   ** This command does not rename the files on disk.  This command merely
   300         -** records the fact that filenames have changed so that appropriate notations
   301         -** can be made at the next commit/checkin.
          393  +** records the fact that filenames have changed so that appropriate
          394  +** notations can be made at the next <a>commit</a>/checkin.
   302    395   */
   303    396   void mv_cmd(void){
   304    397     int i;
   305    398     int vid;
   306    399     char *zDest;
   307    400     Blob dest;
   308    401     Stmt q;

Changes to src/allrepo.c.

    49     49   
    50     50   
    51     51   /*
    52     52   ** COMMAND: all
    53     53   **
    54     54   ** Usage: %fossil all (list|ls|pull|push|rebuild|sync)
    55     55   **
    56         -** The ~/.fossil file records the location of all repositories for a
    57         -** user.  This command performs certain operations on all repositories
    58         -** that can be useful before or after a period of disconnected operation.
           56  +** The ~/.fossil file records the location of all repositories for a user.
           57  +** This command performs certain operations on all repositories that can
           58  +** be useful before or after a period of disconnected operation.
    59     59   **
    60     60   ** On Win32 systems, the file is named "_fossil" and is located in
    61     61   ** %LOCALAPPDATA%, %APPDATA% or %HOMEPATH%.
    62     62   **
    63     63   ** Available operations are:
    64     64   **
    65     65   **    list | ls  Display the location of all repositories
................................................................................
    69     69   **    push       Run a "push" on all repositories
    70     70   **
    71     71   **    rebuild    Rebuild on all repositories
    72     72   **
    73     73   **    sync       Run a "sync" on all repositories
    74     74   **
    75     75   ** Respositories are automatically added to the set of known repositories
    76         -** when one of the following commands against the repository: clone, info,
    77         -** pull, push, or sync
           76  +** when one of the following commands against the repository:
           77  +**   <a>clone</a>, <a>info</a>, <a>pull</a>, <a>push</a>, or <a>sync</a>
    78     78   */
    79     79   void all_cmd(void){
    80     80     int n;
    81     81     Stmt q;
    82     82     const char *zCmd;
    83     83     char *zSyscmd;
    84     84     char *zFossil;

Changes to src/browse.c.

   245    245       }else{
   246    246         @ <li><a href="%s(g.zBaseURL)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)
   247    247         @     </a></li>
   248    248       }
   249    249     }
   250    250     db_finalize(&q);
   251    251     @ </ul></td></tr></table>
   252         -  style_footer();
          252  +  style_footer_cmdref("ls",0);
   253    253   }

Changes to src/checkin.c.

    99     99   
   100    100   /*
   101    101   ** COMMAND: changes
   102    102   **
   103    103   ** Usage: %fossil changes
   104    104   **
   105    105   ** Report on the edit status of all files in the current checkout.
   106         -** See also the "status" and "extra" commands.
          106  +**
          107  +** See also the <a>status</a>, <a>extra</a> and <a>addremove</a> commands.
   107    108   */
   108    109   void changes_cmd(void){
   109    110     Blob report;
   110    111     int vid;
   111    112     db_must_be_within_tree();
   112    113     blob_zero(&report);
   113    114     vid = db_lget_int("checkout", 0);
................................................................................
   118    119   
   119    120   /*
   120    121   ** COMMAND: status
   121    122   **
   122    123   ** Usage: %fossil status
   123    124   **
   124    125   ** Report on the status of the current checkout.
          126  +**
          127  +** See also <a>addremove</a>
   125    128   */
   126    129   void status_cmd(void){
   127    130     int vid;
   128    131     db_must_be_within_tree();
   129    132          /* 012345678901234 */
   130    133     printf("repository:   %s\n", db_lget("repository",""));
   131    134     printf("local-root:   %s\n", g.zLocalRoot);
................................................................................
   245    248   }
   246    249   
   247    250   /*
   248    251   ** COMMAND: extras
   249    252   ** Usage: %fossil extras ?--dotfiles? ?--ignore GLOBPATTERN?
   250    253   **
   251    254   ** Print a list of all files in the source tree that are not part of
   252         -** the current checkout.  See also the "clean" command.
          255  +** the current checkout.  See also the <a>clean</a> command.
   253    256   **
   254    257   ** Files and subdirectories whose names begin with "." are normally
   255    258   ** ignored but can be included by adding the --dotfiles option.
          259  +**
          260  +** See also <a>addremove</a>
   256    261   */
   257    262   void extra_cmd(void){
   258    263     Blob path;
   259    264     Blob repo;
   260    265     Stmt q;
   261    266     int n;
   262    267     const char *zIgnoreFlag = find_option("ignore",0,1);
................................................................................
   291    296   
   292    297   /*
   293    298   ** COMMAND: clean
   294    299   ** Usage: %fossil clean ?--force? ?--dotfiles?
   295    300   **
   296    301   ** Delete all "extra" files in the source tree.  "Extra" files are
   297    302   ** files that are not officially part of the checkout.  See also
   298         -** the "extra" command. This operation cannot be undone. 
          303  +** the <a>extras</a> command. This operation cannot be undone. 
   299    304   **
   300         -** You will be prompted before removing each file. If you are
   301         -** sure you wish to remove all "extra" files you can specify the
   302         -** optional --force flag and no prompts will be issued.
          305  +** You will be prompted before removing each file. If you are sure
          306  +** you wish to remove all "extra" files you can specify the optional
          307  +** --force flag and no prompts will be issued.
   303    308   **
   304         -** Files and subdirectories whose names begin with "." are
   305         -** normally ignored.  They are included if the "--dotfiles" option
   306         -** is used.
          309  +** Files and subdirectories whose names begin with "." are normally
          310  +** ignored.  They are included if the "--dotfiles" option is used.
   307    311   */
   308    312   void clean_cmd(void){
   309    313     int allFlag;
   310    314     int dotfilesFlag;
   311    315     Blob path, repo;
   312    316     Stmt q;
   313    317     int n;
................................................................................
   555    559   ** COMMAND: ci
   556    560   ** COMMAND: commit
   557    561   **
   558    562   ** Usage: %fossil commit ?OPTIONS? ?FILE...?
   559    563   **
   560    564   ** Create a new version containing all of the changes in the current
   561    565   ** checkout.  You will be prompted to enter a check-in comment unless
   562         -** the comment has been specified on the command-line using "-m".
   563         -** The editor defined in the "editor" fossil option (see %fossil help set)
          566  +** the comment has been specified on the command-line using "-m". The
          567  +** editor defined in the "editor" fossil option (see %fossil help set)
   564    568   ** will be used, or from the "VISUAL" or "EDITOR" environment variables
   565    569   ** (in that order) if no editor is set.
   566    570   **
   567    571   ** You will be prompted for your GPG passphrase in order to sign the
   568    572   ** new manifest unless the "--nosign" option is used.  All files that
   569    573   ** have changed will be committed unless some subset of files is
   570    574   ** specified on the command line.
   571    575   **
   572    576   ** The --branch option followed by a branch name cases the new check-in
   573         -** to be placed in the named branch.  The --bgcolor option can be followed
          577  +** to be placed in the named branch. The --bgcolor option can be followed
   574    578   ** by a color name (ex:  '#ffc0c0') to specify the background color of
   575    579   ** entries in the new branch when shown in the web timeline interface.
   576    580   **
   577         -** A check-in is not permitted to fork unless the --force or -f
   578         -** option appears.  A check-in is not allowed against a closed check-in.
          581  +** A check-in is not permitted to fork unless the --force or -f option
          582  +** appears.  A check-in is not allowed against a closed check-in.
   579    583   **
   580    584   ** The --private option creates a private check-in that is never synced.
   581    585   ** Children of private check-ins are automatically private.
   582    586   **
   583    587   ** Options:
   584    588   **
   585    589   **    --comment|-m COMMENT-TEXT

Changes to src/checkout.c.

   170    170   ** the --force option appears on the command-line.  The --keep option
   171    171   ** leaves files on disk unchanged, except the manifest and manifest.uuid
   172    172   ** files.
   173    173   **
   174    174   ** The --latest flag can be used in place of VERSION to checkout the
   175    175   ** latest version in the repository.
   176    176   **
   177         -** See also the "update" command.
          177  +** See also the <a>update</a> command.
   178    178   */
   179    179   void checkout_cmd(void){
   180    180     int forceFlag;                 /* Force checkout even if edits exist */
   181    181     int keepFlag;                  /* Do not change any files on disk */
   182    182     int latestFlag;                /* Checkout the latest version */
   183    183     char *zVers;                   /* Version to checkout */
   184    184     int promptFlag;                /* True to prompt before overwriting */
................................................................................
   270    270   }
   271    271   
   272    272   /*
   273    273   ** COMMAND: close
   274    274   **
   275    275   ** Usage: %fossil close ?-f|--force?
   276    276   **
   277         -** The opposite of "open".  Close the current database connection.
          277  +** The opposite of <a>open</a>.  Close the current database connection.
   278    278   ** Require a -f or --force flag if there are unsaved changed in the
   279    279   ** current check-out.
   280    280   */
   281    281   void close_cmd(void){
   282    282     int forceFlag = find_option("force","f",0)!=0;
   283    283     db_must_be_within_tree();
   284    284     if( !forceFlag && unsaved_changes()==1 ){
   285    285       fossil_fatal("there are unsaved changes in the current checkout");
   286    286     }
   287    287     db_close();
   288    288     unlink_local_database();
   289    289   }

Changes to src/clone.c.

    24     24   
    25     25   
    26     26   /*
    27     27   ** COMMAND: clone
    28     28   **
    29     29   ** Usage: %fossil clone ?OPTIONS? URL FILENAME
    30     30   **
    31         -** Make a clone of a repository specified by URL in the local
    32         -** file named FILENAME.  
           31  +** Make a clone of a repository specified by URL in the local file
           32  +** named FILENAME.  
    33     33   **
    34     34   ** By default, your current login name is used to create the default
    35     35   ** admin user. This can be overridden using the -A|--admin-user
    36     36   ** parameter.
    37     37   **
    38     38   ** Options:
    39     39   **
    40     40   **    --admin-user|-A USERNAME
    41     41   **
           42  +** See also:  <a>push</a>, <a>pull</a>, <a>remote-url</a>, <a>sync</a>
    42     43   */
    43     44   void clone_cmd(void){
    44     45     char *zPassword;
    45     46     const char *zDefaultUser;   /* Optional name of the default user */
    46     47   
    47     48     url_proxy_options();
    48     49     if( g.argc < 4 ){

Changes to src/configure.c.

   367    367   
   368    368   
   369    369   /*
   370    370   ** COMMAND: configuration
   371    371   **
   372    372   ** Usage: %fossil configure METHOD ... ?-R|--repository REPOSITORY?
   373    373   **
   374         -** Where METHOD is one of: export import merge pull push reset.  All methods
   375         -** accept the -R or --repository option to specific a repository.
          374  +** Where METHOD is one of: export import merge pull push reset.  All
          375  +** methods accept the -R or --repository option to specify a repository.
   376    376   **
   377    377   **    %fossil configuration export AREA FILENAME
   378    378   **
   379         -**         Write to FILENAME exported configuraton information for AREA.
   380         -**         AREA can be one of:  all email project shun skin ticket user
          379  +**        Write to FILENAME exported configuraton information for AREA.
          380  +**        AREA can be one of:  all email project shun skin ticket user
   381    381   **
   382    382   **    %fossil configuration import FILENAME
   383    383   **
   384         -**         Read a configuration from FILENAME, overwriting the current
   385         -**         configuration.
          384  +**        Read a configuration from FILENAME, overwriting the current
          385  +**        configuration.
   386    386   **
   387    387   **    %fossil configuration merge FILENAME
   388    388   **
   389         -**         Read a configuration from FILENAME and merge its values into
   390         -**         the current configuration.  Existing values take priority over
   391         -**         values read from FILENAME.
          389  +**        Read a configuration from FILENAME and merge its values into
          390  +**        the current configuration.  Existing values take priority
          391  +**        over values read from FILENAME.
   392    392   **
   393    393   **    %fossil configuration pull AREA ?URL?
   394    394   **
   395         -**         Pull and install the configuration from a different server
   396         -**         identified by URL.  If no URL is specified, then the default
   397         -**         server is used. 
          395  +**        Pull and install the configuration from a different server
          396  +**        identified by URL.  If no URL is specified, then the default
          397  +**        server is used. 
   398    398   **
   399    399   **    %fossil configuration push AREA ?URL?
   400    400   **
   401         -**         Push the local configuration into the remote server identified
   402         -**         by URL.  Admin privilege is required on the remote server for
   403         -**         this to work.
          401  +**        Push the local configuration into the remote server identified
          402  +**        by URL.  Admin privilege is required on the remote server for
          403  +**        this to work.
   404    404   **
   405    405   **    %fossil configuration reset AREA
   406    406   **
   407         -**         Restore the configuration to the default.  AREA as above.
          407  +**        Restore the configuration to the default.  AREA as above.
          408  +**
          409  +** WARNING: Do not import or merge or pull configurations from an
          410  +** untrusted source.  The inbound configuration is not checked for
          411  +** safety and can introduce security vulnerabilities.
   408    412   **
   409         -** WARNING: Do not import, merge, or pull configurations from an untrusted
   410         -** source.  The inbound configuration is not checked for safety and can
   411         -** introduce security vulnerabilities.
          413  +** The different parts of this configuration can also be controlled
          414  +** using the gui:
          415  +**  *  Go to page <a href="setup">Admin</a> and use the subcommands
          416  +**
   412    417   */
   413    418   void configuration_cmd(void){
   414    419     int n;
   415    420     const char *zMethod;
   416    421     if( g.argc<3 ){
   417    422       usage("export|import|merge|pull|reset ...");
   418    423     }

Changes to src/db.c.

  1033   1033   
  1034   1034   /*
  1035   1035   ** COMMAND: new
  1036   1036   **
  1037   1037   ** Usage: %fossil new ?OPTIONS? FILENAME
  1038   1038   **
  1039   1039   ** Create a repository for a new project in the file named FILENAME.
  1040         -** This command is distinct from "clone".  The "clone" command makes
         1040  +** This command is distinct from "clone".  The <a>clone</a> command makes
  1041   1041   ** a copy of an existing project.  This command starts a new project.
  1042   1042   **
  1043   1043   ** By default, your current login name is used to create the default
  1044   1044   ** admin user. This can be overridden using the -A|--admin-user
  1045   1045   ** parameter.
  1046   1046   **
  1047   1047   ** Options:
................................................................................
  1418   1418   **
  1419   1419   ** Open a connection to the local repository in FILENAME.  A checkout
  1420   1420   ** for the repository is created with its root at the working directory.
  1421   1421   ** If VERSION is specified then that version is checked out.  Otherwise
  1422   1422   ** the latest version is checked out.  No files other than "manifest"
  1423   1423   ** and "manifest.uuid" are modified if the --keep option is present.
  1424   1424   **
  1425         -** See also the "close" command.
         1425  +** See also the <a>close</a> command.
  1426   1426   */
  1427   1427   void cmd_open(void){
  1428   1428     Blob path;
  1429   1429     int vid;
  1430   1430     int keepFlag;
  1431   1431     static char *azNewArgv[] = { 0, "checkout", "--prompt", "--latest", 0, 0 };
  1432   1432     url_proxy_options();
................................................................................
  1534   1534   
  1535   1535   /*
  1536   1536   ** COMMAND: settings
  1537   1537   ** COMMAND: unset
  1538   1538   ** %fossil settings ?PROPERTY? ?VALUE? ?-global?
  1539   1539   ** %fossil unset PROPERTY ?-global?
  1540   1540   **
  1541         -** The "settings" command with no arguments lists all properties and their
  1542         -** values.  With just a property name it shows the value of that property.
  1543         -** With a value argument it changes the property for the current repository.
         1541  +** The "settings" command with no arguments lists all properties and
         1542  +** their values.  With just a property name it shows the value of that
         1543  +** property. With a value argument it changes the property for the
         1544  +** current repository.
  1544   1545   **
  1545   1546   ** The "unset" command clears a property setting.
  1546   1547   **
  1547   1548   **
  1548         -**    auto-captcha     If enabled, the Login page provides a button to
  1549         -**                     fill in the captcha password.  Default: on
         1549  +**    auto-captcha  If enabled, the Login page provides a button to
         1550  +**                  fill in the captcha password.  Default: on
         1551  +**
         1552  +**    auto-shun     If enabled, automatically pull the shunning list
         1553  +**                  from a server to which the client autosyncs.
         1554  +**
         1555  +**    autosync      If enabled, automatically pull prior to commit
         1556  +**                  or update and automatically push after commit or
         1557  +**                  tag or branch creation.  If the value is "pullonly"
         1558  +**                  then only pull operations occur automatically.
         1559  +**
         1560  +**    binary-glob   The VALUE is a comma-separated list of GLOB patterns
         1561  +**                  that should be treated as binary files for merging
         1562  +**                  purposes.  Example:   *.xml
         1563  +**
         1564  +**    clearsign     When enabled, fossil will attempt to sign all commits
         1565  +**                  with gpg.  When disabled (the default), commits will
         1566  +**                  be unsigned.
         1567  +**
         1568  +**    diff-command  External command to run when performing a diff.
         1569  +**                  If undefined, the internal text diff will be used.
         1570  +**
         1571  +**    dont-push     Prevent this repository from pushing from client to
         1572  +**                  server.  Useful when setting up a private branch.
         1573  +**
         1574  +**    editor        Text editor command used for check-in comments.
         1575  +**
         1576  +**    gdiff-command External command to run when performing a graphical
         1577  +**                  diff. If undefined, text diff will be used.
         1578  +**
         1579  +**    http-port     The TCP/IP port number to use by the "server"
         1580  +**                  and "ui" commands.  Default: 8080
         1581  +**
         1582  +**    ignore-glob   The VALUE is a comma-separated list of GLOB patterns
         1583  +**                  specifying files that the "extra" command will ignore.
         1584  +**                  Example:  *.o,*.obj,*.exe
         1585  +**
         1586  +**    localauth     If enabled, require that HTTP connections from
         1587  +**                  127.0.0.1 be authenticated by password.  If
         1588  +**                  false, all HTTP requests from localhost have
         1589  +**                  unrestricted access to the repository.
         1590  +**
         1591  +**    mtime-changes Use file modification times (mtimes) to detect when
         1592  +**                  files have been modified.  (Default "on".)
  1550   1593   **
  1551         -**    auto-shun        If enabled, automatically pull the shunning list
  1552         -**                     from a server to which the client autosyncs.
         1594  +**    pgp-command   Command used to clear-sign manifests at check-in.
         1595  +**                  The default is "gpg --clearsign -o ".
  1553   1596   **
  1554         -**    autosync         If enabled, automatically pull prior to commit
  1555         -**                     or update and automatically push after commit or
  1556         -**                     tag or branch creation.  If the value is "pullonly"
  1557         -**                     then only pull operations occur automatically.
         1597  +**    proxy         URL of the HTTP proxy.  If undefined or "off" then
         1598  +**                  the "http_proxy" environment variable is consulted.
         1599  +**                  If the http_proxy environment variable is undefined
         1600  +**                  then a direct HTTP connection is used.
  1558   1601   **
  1559         -**    binary-glob      The VALUE is a comma-separated list of GLOB patterns
  1560         -**                     that should be treated as binary files for merging
  1561         -**                     purposes.  Example:   *.xml
  1562         -**
  1563         -**    clearsign        When enabled, fossil will attempt to sign all commits
  1564         -**                     with gpg.  When disabled (the default), commits will
  1565         -**                     be unsigned.
         1602  +**    ssh-command   Command used to talk to a remote machine with
         1603  +**                  the "ssh://" protocol.
  1566   1604   **
  1567         -**    diff-command     External command to run when performing a diff.
  1568         -**                     If undefined, the internal text diff will be used.
  1569         -**
  1570         -**    dont-push        Prevent this repository from pushing from client to
  1571         -**                     server.  Useful when setting up a private branch.
  1572         -**
  1573         -**    editor           Text editor command used for check-in comments.
  1574         -**
  1575         -**    gdiff-command    External command to run when performing a graphical
  1576         -**                     diff. If undefined, text diff will be used.
  1577         -**
  1578         -**    http-port        The TCP/IP port number to use by the "server"
  1579         -**                     and "ui" commands.  Default: 8080
         1605  +**    web-browser   A shell command used to launch your preferred
         1606  +**                  web browser when given a URL as an argument.
         1607  +**                  Defaults to "start" on windows, "open" on Mac,
         1608  +**                  and "firefox" on Unix.
  1580   1609   **
  1581         -**    ignore-glob      The VALUE is a comma-separated list of GLOB patterns
  1582         -**                     specifying files that the "extra" command will ignore.
  1583         -**                     Example:  *.o,*.obj,*.exe
  1584         -**
  1585         -**    localauth        If enabled, require that HTTP connections from
  1586         -**                     127.0.0.1 be authenticated by password.  If
  1587         -**                     false, all HTTP requests from localhost have
  1588         -**                     unrestricted access to the repository.
  1589         -**
  1590         -**    mtime-changes    Use file modification times (mtimes) to detect when
  1591         -**                     files have been modified.  (Default "on".)
  1592         -**
  1593         -**    pgp-command      Command used to clear-sign manifests at check-in.
  1594         -**                     The default is "gpg --clearsign -o ".
  1595         -**
  1596         -**    proxy            URL of the HTTP proxy.  If undefined or "off" then
  1597         -**                     the "http_proxy" environment variable is consulted.
  1598         -**                     If the http_proxy environment variable is undefined
  1599         -**                     then a direct HTTP connection is used.
  1600         -**
  1601         -**    ssh-command      Command used to talk to a remote machine with
  1602         -**                     the "ssh://" protocol.
  1603         -**
  1604         -**    web-browser      A shell command used to launch your preferred
  1605         -**                     web browser when given a URL as an argument.
  1606         -**                     Defaults to "start" on windows, "open" on Mac,
  1607         -**                     and "firefox" on Unix.
         1610  +** There is a simple form in the administration gui for these settings:
         1611  +**  *  Go to the <a href="setup">Admin</a> page
         1612  +**  ** and click <a href="setup_settings">Settings</a>
  1608   1613   */
  1609   1614   void setting_cmd(void){
  1610   1615     int i;
  1611   1616     int globalFlag = find_option("global","g",0)!=0;
  1612   1617     int unsetFlag = g.argv[1][0]=='u';
  1613   1618     db_open_config(1);
  1614   1619     db_find_and_open_repository(0);

Changes to src/descendants.c.

   253    253       timeline_query_for_tty()
   254    254     );
   255    255     print_timeline(&q, 20);
   256    256     db_finalize(&q);
   257    257   }
   258    258   
   259    259   /*
   260         -** COMMAND:  leaves
          260  +** COMMAND: leaves
   261    261   **
   262    262   ** Usage: %fossil leaves ?--all? ?--closed?
   263    263   **
   264    264   ** Find leaves of all branches.  By default show only open leaves.
   265    265   ** The --all flag causes all leaves (closed and open) to be shown.
   266    266   ** The --closed flag shows only closed leaves.
          267  +**
          268  +** This information can also be viewed in the gui:
          269  +**  * Go the <a href="leaves">leaves</a> page
   267    270   */
   268    271   void leaves_cmd(void){
   269    272     Stmt q;
   270    273     int showAll = find_option("all", 0, 0)!=0;
   271    274     int showClosed = find_option("closed", 0, 0)!=0;
   272    275   
   273    276     db_must_be_within_tree();
................................................................................
   290    293   static void leaves_extra(int rid){
   291    294     if( g.okHistory ){
   292    295       @ <a href="%s(g.zBaseURL)/timeline?p=%d(rid)">[timeline]</a>
   293    296     }
   294    297   }
   295    298   
   296    299   /*
   297         -** WEBPAGE:  leaves
          300  +** WEBPAGE: leaves
   298    301   **
   299    302   ** Find leaves of all branches.
   300    303   */
   301    304   void leaves_page(void){
   302    305     Stmt q;
   303    306     int showAll = P("all")!=0;
   304    307     int showClosed = P("closed")!=0;
................................................................................
   349    352     @ <br />
   350    353     @ <script  type="text/JavaScript">
   351    354     @ function xin(id){
   352    355     @ }
   353    356     @ function xout(id){
   354    357     @ }
   355    358     @ </script>
   356         -  style_footer();
          359  +  style_footer_cmdref("leaves",0);
   357    360   }

Changes to src/diff.c.

   808    808     annotate_file(&ann, fnid, mid, g.okHistory);
   809    809     @ <pre>
   810    810     for(i=0; i<ann.nOrig; i++){
   811    811       ((char*)ann.aOrig[i].z)[ann.aOrig[i].n] = 0;
   812    812       @ %s(ann.aOrig[i].zSrc): %h(ann.aOrig[i].z)
   813    813     }
   814    814     @ </pre>
   815         -  style_footer();
          815  +  style_footer_cmdref("annotate",0);
   816    816   }
   817    817   
   818    818   /*
   819    819   ** COMMAND: annotate
   820    820   **
   821    821   ** %fossil annotate FILENAME
   822    822   **
   823    823   ** Output the text of a file with markings to show when each line of
   824    824   ** the file was last modified.
          825  +**
          826  +** This can also be viewed in the gui, if you click the "annotate" link
          827  +** on the "File History" page of files.
   825    828   */
   826    829   void annotate_cmd(void){
   827    830     int fnid;         /* Filename ID */
   828    831     int fid;          /* File instance ID */
   829    832     int mid;          /* Manifest where file was checked in */
   830    833     Blob treename;    /* FILENAME translated to canonical form */
   831    834     char *zFilename;  /* Cannonical filename */

Changes to src/diffcmd.c.

   415    415   **
   416    416   ** If the "--from VERSION" or "-r VERSION" option is used it specifies
   417    417   ** the source check-in for the diff operation.  If not specified, the 
   418    418   ** source check-in is the base check-in for the current check-out.
   419    419   **
   420    420   ** If the "--to VERSION" option appears, it specifies the check-in from
   421    421   ** which the second version of the file or files is taken.  If there is
   422         -** no "--to" option then the (possibly edited) files in the current check-out
   423         -** are used.
          422  +** no "--to" option then the (possibly edited) files in the current
          423  +** check-out are used.
   424    424   **
   425    425   ** The "-i" command-line option forces the use of the internal diff logic
   426    426   ** rather than any external diff program that might be configured using
   427         -** the "setting" command.  If no external diff program is configured, then
   428         -** the "-i" option is a no-op.  The "-i" option converts "gdiff" into "diff".
          427  +** the <a>setting</a> command. If no external diff program is configured, then
          428  +** the "-i" option is a no-op.  The "-i" option converts "gdiff" into
          429  +** "diff".
          430  +**
          431  +** The results of the internal diff command can also be seen in the gui:
          432  +**  1. Go to the <a href="vdiff">vdiff</a> page
          433  +**  2. use the "diff against another version" link on the Check-in detail view.
   429    434   */
   430    435   void diff_cmd(void){
   431    436     int isGDiff;               /* True for gdiff.  False for normal diff */
   432    437     int isInternDiff;          /* True for internal diff */
   433    438     int hasNFlag;              /* True if -N or --new-file flag is used */
   434    439     const char *zFrom;         /* Source version number */
   435    440     const char *zTo;           /* Target version number */

Changes to src/event.c.

   438    438   
   439    439     @ <tr><td colspan="2">
   440    440     @ <input type="submit" name="preview" value="Preview Your Changes" />
   441    441     @ <input type="submit" name="submit" value="Apply These Changes" />
   442    442     @ <input type="submit" name="cancel" value="Cancel" />
   443    443     @ </td></tr></table>
   444    444     @ </div></form>
   445         -  style_footer();
          445  +  style_footer_cmdref(0,"<a href=\"wiki_rules\">wiki format</a>");
   446    446   }

Changes to src/finfo.c.

    25     25   ** 
    26     26   ** Usage: %fossil finfo FILENAME
    27     27   **
    28     28   ** Print the change history for a single file.
    29     29   **
    30     30   ** The "--limit N" and "--offset P" options limit the output to the first
    31     31   ** N changes after skipping P changes.
           32  +**
           33  +** The history of a file can also be viewed in the gui:
           34  +**  * Go to the <a href="dir">file browser</a> and drill down to the file
    32     35   */
    33     36   void finfo_cmd(void){
    34     37     Stmt q;
    35     38     int vid;
    36     39     Blob dest;
    37     40     const char *zFilename;
    38     41     const char *zLimit;
................................................................................
   207    210       }else{
   208    211         @ <tr><td></td><td><div style="width:%d(pGraph->mxRail*20+30)px;"></div>
   209    212         @     </td></tr>
   210    213       }
   211    214     }
   212    215     @ </table>
   213    216     timeline_output_graph_javascript(pGraph);
   214         -  style_footer();
          217  +  style_footer_cmdref("finfo",0);
   215    218   }

Changes to src/info.c.

   431    431           @ | <a href="%s(g.zTop)/zip/%s(zProjName)-%S(zUuid).zip?uuid=%s(zUuid)">
   432    432           @         ZIP archive</a>
   433    433         }
   434    434         @   | <a href="%s(g.zTop)/artifact/%S(zUuid)">manifest</a>
   435    435         if( g.okWrite ){
   436    436           @   | <a href="%s(g.zTop)/ci_edit?r=%S(zUuid)">edit</a>
   437    437         }
          438  +      @   | <a href="%s(g.zTop)/vdiff?from=%S(zUuid)">
          439  +      @      diff against another version</a>
   438    440         @   </td>
   439    441         @ </tr>
   440    442       }
   441    443       @ </table>
   442    444     }else{
   443    445       style_header("Check-in Information");
   444    446       login_anonymous_available();
................................................................................
   473    475     while( db_step(&q)==SQLITE_ROW ){
   474    476       const char *zName = db_column_text(&q,0);
   475    477       const char *zOld = db_column_text(&q,1);
   476    478       const char *zNew = db_column_text(&q,2);
   477    479       append_file_change_line(zName, zOld, zNew, showDiff);
   478    480     }
   479    481     db_finalize(&q);
   480         -  style_footer();
          482  +  style_footer_cmdref("info",0);
   481    483   }
   482    484   
   483    485   /*
   484    486   ** WEBPAGE: winfo
   485    487   ** URL:  /winfo?name=RID
   486    488   **
   487    489   ** Return information about a wiki page.
................................................................................
   556    558         blob_init(&wiki, m.zWiki, -1);
   557    559         @ <div class="section">Content</div>
   558    560         wiki_convert(&wiki, 0, 0);
   559    561         blob_reset(&wiki);
   560    562       }
   561    563       manifest_clear(&m);
   562    564     }
   563         -  style_footer();
          565  +  style_footer_cmdref("info",0);
   564    566   }
   565    567   
   566    568   /*
   567    569   ** Show a webpage error message
   568    570   */
   569    571   void webpage_error(const char *zFormat, ...){
   570    572     va_list ap;
................................................................................
   632    634   ** WEBPAGE: vdiff
   633    635   ** URL: /vdiff?from=UUID&amp;to=UUID&amp;detail=BOOLEAN
   634    636   **
   635    637   ** Show all differences between two checkins.  
   636    638   */
   637    639   void vdiff_page(void){
   638    640     int ridFrom, ridTo;
   639         -  int showDetail = 0;
          641  +  int showDetail = atoi(PD("detail","0"));
          642  +  const char *zFrom = P("from");
          643  +  const char *zTo = P("to");
   640    644     int iFrom, iTo;
   641    645     Manifest mFrom, mTo;
   642    646   
   643    647     login_check_credentials();
   644    648     if( !g.okRead ){ login_needed(); return; }
   645    649     login_anonymous_available();
   646    650   
   647         -  if( vdiff_parse_manifest("from", &ridFrom, &mFrom) ) return;
   648         -  if( vdiff_parse_manifest("to", &ridTo, &mTo) ) return;
   649         -  showDetail = atoi(PD("detail","0"));
          651  +  if( !zFrom || !zFrom[0] || !zTo || !zTo[0] ){
          652  +    /* if from or to or both are bissing, show a form to enter
          653  +    ** the query parameters by hand
          654  +    */
          655  +    style_header("Check-in Differences");
          656  +    @ <p><br/>
          657  +    @ Enter below the UUIDs, branch- or tag-names, you wish to diff:
          658  +    @ <br/></p>
          659  +    @ <form action="%s(g.zBaseURL)/vdiff" method="post"><div>
          660  +    @ <table><tr><td>from:</td><td><input type="text" size="40"
          661  +    @  name="from" value="%s(zFrom?zFrom:"")" /></td><td></td></tr>
          662  +    @ <tr><td>to:</td><td><input type="text" size="40"
          663  +    @  name="to" value="%s(zTo?zTo:"")" /></td><td></td></tr>
          664  +    @ <tr><td>details:</td><td><input type="checkbox" name="detail"
          665  +    @  checked="checked" value="1" /></td></tr>
          666  +    @ <tr><td></td><td></td><td>
          667  +    @  <input type="submit" name="diff" value="diff" /></td></tr></table>
          668  +    @ </div></form>
          669  +    style_footer_cmdref("diff",0);
          670  +    return;
          671  +  }else if(    vdiff_parse_manifest("from", &ridFrom, &mFrom) 
          672  +            || vdiff_parse_manifest("to", &ridTo, &mTo)
          673  +  ){
          674  +    return;
          675  +  }
   650    676     style_header("Check-in Differences");
   651    677     @ <h2>Difference From:</h2><blockquote>
   652    678     checkin_description(ridFrom);
   653    679     @ </blockquote><h2>To:</h2><blockquote>
   654    680     checkin_description(ridTo);
   655    681     @ </blockquote><hr /><p>
   656    682   
................................................................................
   683    709         iFrom++;
   684    710         iTo++;
   685    711       }
   686    712     }
   687    713     manifest_clear(&mFrom);
   688    714     manifest_clear(&mTo);
   689    715   
   690         -  style_footer();
          716  +  style_footer_cmdref("diff",0);
   691    717   }
   692    718   
   693    719   /*
   694    720   ** Write a description of an object to the www reply.
   695    721   **
   696    722   ** If the object is a file then mention:
   697    723   **
................................................................................
   913    939     blob_zero(&diff);
   914    940     text_diff(&c1, &c2, &diff, 4, 1);
   915    941     blob_reset(&c1);
   916    942     blob_reset(&c2);
   917    943     @ %h(blob_str(&diff))
   918    944     @ </pre></blockquote>
   919    945     blob_reset(&diff);
   920         -  style_footer();
          946  +  style_footer_cmdref("diff",0);
   921    947   }
   922    948   
   923    949   /*
   924    950   ** WEBPAGE: raw
   925    951   ** URL: /raw?name=ARTIFACTID&m=TYPE
   926    952   ** 
   927    953   ** Return the uninterpreted content of an artifact.  Used primarily
................................................................................
  1155   1181       }else{
  1156   1182         @ <pre>
  1157   1183         hexdump(&content);
  1158   1184         @ </pre>
  1159   1185       }
  1160   1186       @ </blockquote>
  1161   1187     }
  1162         -  style_footer();
         1188  +  style_footer_cmdref( "artifact",0 );
  1163   1189   }  
  1164   1190   
  1165   1191   /*
  1166   1192   ** WEBPAGE: tinfo
  1167   1193   ** URL: /tinfo?name=ARTIFACTID
  1168   1194   **
  1169   1195   ** Show the details of a ticket change control artifact.
................................................................................
  1215   1241       @ </p>
  1216   1242     }
  1217   1243     @
  1218   1244     @ <ol>
  1219   1245     free(zDate);
  1220   1246     ticket_output_change_artifact(&m);
  1221   1247     manifest_clear(&m);
  1222         -  style_footer();
         1248  +  style_footer_cmdref("info",0);
  1223   1249   }
  1224   1250   
  1225   1251   
  1226   1252   /*
  1227   1253   ** WEBPAGE: info
  1228   1254   ** URL: info/ARTIFACTID
  1229   1255   **

Changes to src/main.c.

   574    574   
   575    575   
   576    576   /*
   577    577   ** COMMAND: help
   578    578   **
   579    579   ** Usage: %fossil help COMMAND
   580    580   **
   581         -** Display information on how to use COMMAND
          581  +** Display information on how to use COMMAND. If COMMAND is
          582  +** omitted, a list of available commands is displayed.
          583  +**
          584  +** This can also be viewed in the gui:
          585  +**  * Go to the <a href="help">help</a> page and click COMMAND
   582    586   */
   583    587   void help_cmd(void){
   584    588     int rc, idx;
   585    589     const char *z;
   586    590     if( g.argc!=3 ){
   587    591       printf("Usage: %s help COMMAND.\nAvailable COMMANDs:\n", g.argv[0]);
   588    592       cmd_cmd_list();
................................................................................
   600    604       fossil_fatal("no help available for the %s command",
   601    605          aCommand[idx].zName);
   602    606     }
   603    607     while( *z ){
   604    608       if( *z=='%' && strncmp(z, "%fossil", 7)==0 ){
   605    609         printf("%s", g.argv[0]);
   606    610         z += 7;
          611  +    }else if( *z=='<' && strncmp(z,"<a ",3)==0 ){
          612  +      putchar('"');
          613  +      while( *z && *z!='>') z++;
          614  +      if( *z ) z++;
          615  +    }else if( *z=='<' && strncmp(z,"<a>",3)==0 ){
          616  +      putchar('"');
          617  +      z += 3;
          618  +    }else if( *z=='<' && strncmp(z,"</a>",4)==0 ){
          619  +      putchar('"');
          620  +      z += 4;
   607    621       }else{
   608    622         putchar(*z);
   609    623         z++;
   610    624       }
   611    625     }
   612    626     putchar('\n');
   613    627   }
................................................................................
   616    630   ** WEBPAGE: help
   617    631   ** URL: /help?cmd=CMD
   618    632   */
   619    633   void help_page(void){
   620    634       const char * zCmd = P("cmd");
   621    635       
   622    636       style_header("Command line help %s%s",zCmd?" - ":"",zCmd?zCmd:"");
   623         -    if( zCmd ){
          637  +    if( zCmd  && zCmd[0] && strcmp(zCmd,"test") ){
   624    638         int rc, idx;
   625         -      char *z, *s, *d;
   626    639   
   627         -      @ <h1>%s(zCmd)</h1>
   628    640         rc = name_search(zCmd, aCommand, count(aCommand), &idx);
   629    641         if( rc==1 ){
   630         -        @ unknown command: %s(zCmd)
          642  +        @ <h1>unknown command: %s(zCmd)</h1>
   631    643         }else if( rc==2 ){
   632         -        @ ambiguous command prefix: %s(zCmd)
          644  +        @ <h1>ambiguous command prefix: %s(zCmd)</h1>
   633    645         }else{
   634         -        z = (char*)aCmdHelp[idx];
   635         -        if( z==0 ){
          646  +        char *zSrc, *zDest;
          647  +        int src,dest,len;
          648  +
          649  +        @ <h1>%s(aCommand[idx].zName)</h1>
          650  +        zSrc = (char*)aCmdHelp[idx];
          651  +        if( zSrc==0 || *zSrc==0 ){
   636    652             @ no help available for the %s(aCommand[idx].zName) command
   637    653           }else{
   638         -          z=s=d=mprintf("%s",z);
   639         -	  while( *s ){
   640         -	    if( *s=='%' && strncmp(s, "%fossil", 7)==0 ){
   641         -	      s++;
   642         -	    }else{
   643         -	      *d++ = *s++;
   644         -	    }
   645         -	  }
   646         -	  *d = 0;
   647         -	  @ <pre>%s(z)</pre>
   648         -	  free(z);
   649         -	}
          654  +          len = strlen(zSrc);
          655  +          zDest = malloc(len+1);
          656  +          for(src=dest=0;zSrc[src];){
          657  +            if( zSrc[src]=='%' && strncmp(zSrc+src, "%fossil", 7)==0 ){
          658  +              src++; /* skip % for fossil argv[0] expansion */
          659  +            }else if( zSrc[src]=='<' && strncmp(zSrc+src, "</a>", 3)==0 ){
          660  +              src += 4;
          661  +              zDest[dest++]='<';
          662  +              zDest[dest++]='/';
          663  +              zDest[dest++]='a';
          664  +              zDest[dest++]='>';
          665  +              zDest[dest++]='"';
          666  +            }else if( zSrc[src]=='<' && strncmp(zSrc+src, "<a ", 3)==0 ){
          667  +              len += 2;
          668  +	      zDest=realloc(zDest,len);
          669  +              zDest[dest++]='"';
          670  +              while( zSrc[src] && zSrc[src]!='>' ){
          671  +                zDest[dest++]=zSrc[src++];
          672  +              }
          673  +              if( zSrc[src] ) zDest[dest++]=zSrc[src++];
          674  +            }else if( zSrc[src]=='<' && strncmp(zSrc+src, "<a>", 3)==0 ){
          675  +              /* found an internal command cross reference,
          676  +              ** create an additional link
          677  +              */
          678  +              int start;
          679  +
          680  +              len+=80;
          681  +              zDest=realloc(zDest,len);
          682  +              zDest[dest++]='"';
          683  +              zDest[dest++]=zSrc[src++]; /* < */
          684  +              zDest[dest++]=zSrc[src++]; /* a */
          685  +              zDest[dest++]=' ';
          686  +              zDest[dest++]='h';
          687  +              zDest[dest++]='r';
          688  +              zDest[dest++]='e';
          689  +              zDest[dest++]='f';
          690  +              zDest[dest++]='=';
          691  +              zDest[dest++]='"';
          692  +              zDest[dest++]='h';
          693  +              zDest[dest++]='e';
          694  +              zDest[dest++]='l';
          695  +              zDest[dest++]='p';
          696  +              zDest[dest++]='?';
          697  +              zDest[dest++]='c';
          698  +              zDest[dest++]='m';
          699  +              zDest[dest++]='d';
          700  +              zDest[dest++]='=';
          701  +              start = src+1;
          702  +              for( src=start; zSrc[src] && zSrc[src]!='<'; ){
          703  +                zDest[dest++]=zSrc[src++]; /* command name */
          704  +              }
          705  +              zDest[dest++]='"';
          706  +              zDest[dest++]='>';
          707  +              for( src=start; zSrc[src] && zSrc[src]!='<'; ){
          708  +                zDest[dest++]=zSrc[src++]; /* command name */
          709  +              }
          710  +            }else{
          711  +              zDest[dest++] = zSrc[src++];
          712  +            }
          713  +          }
          714  +          zDest[dest] = 0;
          715  +          @ <div class="cmdhelp">%s(zDest)</div>
          716  +          free(zDest);
          717  +          @ <hr/>additional information may be found in the web documentation:
          718  +          @ <a href="http://www.fossil-scm.org/fossil/doc/tip/www/cmd_%s(aCommand[idx].zName).wiki">
          719  +          @ cmd_%s(aCommand[idx].zName)</a>, 
          720  +        }
   650    721         }
   651         -      @ <hr/><a href="help">available commands</a> in fossil
          722  +      @ see also the list of
          723  +      @ <a href="help">available commands</a> in fossil
   652    724         @ version %s(MANIFEST_VERSION" "MANIFEST_DATE) UTC
   653    725       }else{
   654         -      int i;
          726  +      int nCol, nRow, i, ignored, cnt, showTest;
   655    727         
          728  +      /* detect, if we show normal or test commands */
          729  +      showTest = ( zCmd  && !strncmp(zCmd,"test",4) );
          730  +      for( i=0,ignored=0; i<count(aCommand); i++){
          731  +        if( (strncmp(aCommand[i].zName,"test",4)==0) ^ showTest ) ignored++;
          732  +      }
          733  +      nCol = 4;
          734  +      nRow = (count(aCommand)-ignored+nCol-1)/nCol;
   656    735         @ <h1>Available commands</h1>
   657         -      for(i=0; i<count(aCommand); i++){
   658         -        if( strncmp(aCommand[i].zName,"test",4)==0 ) continue;
   659         -        @ <kbd><a href="help?cmd=%s(aCommand[i].zName)">
   660         -        @ %s(aCommand[i].zName)</a></kbd>
          736  +      @ <table class="browser"><tr><td class="browser"><ul class="browser">
          737  +      for( i=cnt=0; i<count(aCommand); i++ ){
          738  +        if( cnt==nRow ){
          739  +          @ </ul></td><td class="browser"><ul class="browser">
          740  +          cnt=0;
          741  +        }
          742  +        if( (strncmp(aCommand[i].zName,"test",4)==0) ^ showTest ) continue;
          743  +        @ <li><kbd><a href="help?cmd=%s(aCommand[i].zName)">
          744  +        @ %s(aCommand[i].zName)</a></kbd></li>
          745  +        cnt++;
          746  +      }
          747  +      @ </ul></td></tr></table>
          748  +      if( showTest ){
          749  +        @ <a href="help">show standard commands</a>
          750  +      }else{
          751  +        @ <a class="hidden" href="help?cmd=test">show test commands</a>
   661    752         }
   662    753         @ <hr/>fossil version %s(MANIFEST_VERSION" "MANIFEST_DATE) UTC
   663    754       }
   664    755       style_footer();
   665    756   }
   666    757   
   667    758   /*
................................................................................
   867    958   **
   868    959   **      #!/usr/bin/fossil
   869    960   **      repository: /home/somebody/project.db
   870    961   **
   871    962   ** The second line defines the name of the repository.  After locating
   872    963   ** the repository, fossil will generate a webpage on stdout based on
   873    964   ** the values of standard CGI environment variables.
          965  +**
          966  +** See also the <a>http</a>, <a>server</a> and <a>ui</a> commands.
   874    967   */
   875    968   void cmd_cgi(void){
   876    969     const char *zFile;
   877    970     const char *zNotFound = 0;
   878    971     Blob config, line, key, value;
   879    972     if( g.argc==3 && strcmp(g.argv[1],"cgi")==0 ){
   880    973       zFile = g.argv[2];
................................................................................
   980   1073   ** repository.
   981   1074   **
   982   1075   ** If REPOSITORY is a directory that contains one or more respositories
   983   1076   ** with names of the form "*.fossil" then the first element of the URL
   984   1077   ** pathname selects among the various repositories.  If the pathname does
   985   1078   ** not select a valid repository and the --notfound option is available,
   986   1079   ** then the server redirects (HTTP code 302) to the URL of --notfound.
         1080  +**
         1081  +** See also the <a>cgi</a>, <a>server</a> and <a>ui</a> commands.
   987   1082   */
   988   1083   void cmd_http(void){
   989   1084     const char *zIpAddr;
   990   1085     const char *zNotFound;
   991   1086     zNotFound = find_option("notfound", 0, 1);
   992   1087     g.cgiOutput = 1;
   993   1088     if( g.argc!=2 && g.argc!=3 && g.argc!=6 ){
................................................................................
  1068   1163   ** the web server.  The "ui" command also binds to 127.0.0.1 and so will
  1069   1164   ** only process HTTP traffic from the local machine.
  1070   1165   **
  1071   1166   ** In the "server" command, the REPOSITORY can be a directory (aka folder)
  1072   1167   ** that contains one or more respositories with names ending in ".fossil".
  1073   1168   ** In that case, the first element of the URL is used to select among the
  1074   1169   ** various repositories.
         1170  +**
         1171  +** See also the <a>cgi</a> and <a>http</a> commands.
  1075   1172   */
  1076   1173   void cmd_webserver(void){
  1077   1174     int iPort, mxPort;        /* Range of TCP ports allowed */
  1078   1175     const char *zPort;        /* Value of the --port option */
  1079   1176     char *zBrowser;           /* Name of web browser program */
  1080   1177     char *zBrowserCmd = 0;    /* Command to launch the web browser */
  1081   1178     int isUiCmd;              /* True if command is "ui", not "server' */

Changes to src/merge.c.

    38     38   **
    39     39   ** Only file content is merged.  The result continues to use the
    40     40   ** file and directory names from the current checkout even if those
    41     41   ** names might have been changed in the branch being merged in.
    42     42   **
    43     43   ** Other options:
    44     44   **
    45         -**   --detail                Show additional details of the merge
           45  +**   --detail             Show additional details of the merge
    46     46   **
    47         -**   --binary GLOBPATTERN    Treat files that match GLOBPATTERN as binary
    48         -**                           and do not try to merge parallel changes.  This
    49         -**                           option overrides the "binary-glob" setting.
           47  +**   --binary GLOBPATTERN Treat files that match GLOBPATTERN as binary
           48  +**                        and do not try to merge parallel changes. This
           49  +**                        option overrides the "binary-glob" setting.
    50     50   */
    51     51   void merge_cmd(void){
    52     52     int vid;              /* Current version */
    53     53     int mid;              /* Version we are merging against */
    54     54     int pid;              /* The pivot version - most recent common ancestor */
    55     55     int detailFlag;       /* True if the --detail option is present */
    56     56     int pickFlag;         /* True if the --cherrypick option is present */

Changes to src/rebuild.c.

   377    377   /*
   378    378   ** COMMAND: scrub
   379    379   ** %fossil scrub [--verily] [--force] [REPOSITORY]
   380    380   **
   381    381   ** The command removes sensitive information (such as passwords) from a
   382    382   ** repository so that the respository can be sent to an untrusted reader.
   383    383   **
   384         -** By default, only passwords are removed.  However, if the --verily option
   385         -** is added, then private branches, concealed email addresses, IP
   386         -** addresses of correspondents, and similar privacy-sensitive fields
          384  +** By default, only passwords are removed.  However, if the --verily
          385  +** option is added, then private branches, concealed email addresses,
          386  +** IP addresses of correspondents, and similar privacy-sensitive fields
   387    387   ** are also purged.
   388    388   **
   389    389   ** This command permanently deletes the scrubbed information.  The effects
   390    390   ** of this command are irreversible.  Use with caution.
   391    391   **
   392    392   ** The user is prompted to confirm the scrub unless the --force option
   393    393   ** is used.
................................................................................
   483    483   ** Usage: %fossil reconstruct FILENAME DIRECTORY
   484    484   **
   485    485   ** This command studies the artifacts (files) in DIRECTORY and
   486    486   ** reconstructs the fossil record from them. It places the new
   487    487   ** fossil repository in FILENAME. Subdirectories are read, files
   488    488   ** with leading '.' in the filename are ignored.
   489    489   **
          490  +** See also the <a>deconstruct</a> command.
   490    491   */
   491    492   void reconstruct_cmd(void) {
   492    493     char *zPassword;
   493    494     if( g.argc!=4 ){
   494    495       usage("FILENAME DIRECTORY");
   495    496     }
   496    497     if( file_isdir(g.argv[3])!=1 ){
................................................................................
   521    522     zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
   522    523     printf("admin-user: %s (initial password is \"%s\")\n", g.zLogin, zPassword);
   523    524   }
   524    525   
   525    526   /*
   526    527   ** COMMAND: deconstruct
   527    528   **
   528         -** Usage %fossil deconstruct ?-R|--repository REPOSITORY? ?-L|--prefixlength N? DESTINATION
          529  +** Usage: %fossil deconstruct ?-R|--repository REPOSITORY? \\
          530  +**                ?-L|--prefixlength N? DESTINATION
   529    531   **
   530         -** This command exports all artifacts of o given repository and
   531         -** writes all artifacts to the file system. The DESTINATION directory
   532         -** will be populated with subdirectories AA and files AA/BBBBBBBBB.., where
   533         -** AABBBBBBBBB.. is the 40 character artifact ID, AA the first 2 characters.
          532  +** This command exports all artifacts of o given repository and writes
          533  +** all artifacts to the file system. The DESTINATION directory will be
          534  +** populated with subdirectories AA and files AA/BBBBBBBBB.., where
          535  +** AABBBBBBBBB.. is the 40 character artifact ID and AA the first 2
          536  +** characters.
   534    537   ** If -L|--prefixlength is given, the length (default 2) of the directory
   535    538   ** prefix can be set to 0,1,..,9 characters.
          539  +**
          540  +** See also the <a>reconstruct</a> command.
   536    541   */
   537    542   void deconstruct_cmd(void){
   538    543     const char *zDestDir;
   539    544     const char *zPrefixOpt;
   540    545     Stmt        s;
   541    546   
   542    547     /* check number of arguments */

Changes to src/report.c.

    78     78     Th_Store("report_items", blob_str(&ril));
    79     79     
    80     80     Th_Render(zScript);
    81     81     
    82     82     blob_reset(&ril);
    83     83     if( g.thTrace ) Th_Trace("END_REPORTLIST<br />\n", -1);
    84     84   
    85         -  style_footer();
           85  +  style_footer_cmdref("ticket",0);
    86     86   }
    87     87   
    88     88   /*
    89     89   ** Remove whitespace from both ends of a string.
    90     90   */
    91     91   char *trim_string(const char *zOrig){
    92     92     int i;

Changes to src/setup.c.

   215    215     @ privileges of <span class="usertype">developer</span>,
   216    216     @ <span class="usertype">anonymous</span>, and
   217    217     @ <span class="usertype">nobody</span>.
   218    218     @ </p></li>
   219    219     @
   220    220     @ </ol>
   221    221     @ </td></tr></table>
   222         -  style_footer();
          222  +  style_footer_cmdref("user",0);
   223    223   }
   224    224   
   225    225   /*
   226    226   ** Return true if zPw is a valid password string.  A valid
   227    227   ** password string is:
   228    228   **
   229    229   **  (1)  A zero-length string, or
................................................................................
   662    662     @ <span class="usertype">developer</span>
   663    663     @ user.  Similarly, the <span class="usertype">reader</span> user is a 
   664    664     @ template for users who are allowed more access than
   665    665     @ <span class="usertype">anonymous</span>,
   666    666     @ but less than a <span class="usertype">developer</span>.
   667    667     @ </p></li>
   668    668     @ </ul>
   669         -  style_footer();
          669  +  style_footer_cmdref("user",0);
   670    670   }
   671    671   
   672    672   
   673    673   /*
   674    674   ** Generate a checkbox for an attribute.
   675    675   */
   676    676   static void onoff_attribute(
................................................................................
  1002   1002     @ The default CSS is shown below for reference.  Other examples
  1003   1003     @ of CSS files can be seen on the <a href="setup_skin">skins page</a>.
  1004   1004     @ See also the <a href="setup_header">header</a> and
  1005   1005     @ <a href="setup_footer">footer</a> editing screens.
  1006   1006     @ <blockquote><pre>
  1007   1007     cgi_append_default_css();
  1008   1008     @ </pre></blockquote>
  1009         -  style_footer();
         1009  +  style_footer_cmdref("configuration","area skin");
  1010   1010     db_end_transaction(0);
  1011   1011   }
  1012   1012   
  1013   1013   /*
  1014   1014   ** WEBPAGE: setup_header
  1015   1015   */
  1016   1016   void setup_header(void){
................................................................................
  1040   1040     @ The default header is shown below for reference.  Other examples
  1041   1041     @ of headers can be seen on the <a href="setup_skin">skins page</a>.
  1042   1042     @ See also the <a href="setup_editcss">CSS</a> and
  1043   1043     @ <a href="setup_footer">footer</a> editing screeens.
  1044   1044     @ <blockquote><pre>
  1045   1045     @ %h(zDefaultHeader)
  1046   1046     @ </pre></blockquote>
  1047         -  style_footer();
         1047  +  style_footer_cmdref("configuration","area skin");
  1048   1048     db_end_transaction(0);
  1049   1049   }
  1050   1050   
  1051   1051   /*
  1052   1052   ** WEBPAGE: setup_footer
  1053   1053   */
  1054   1054   void setup_footer(void){
................................................................................
  1077   1077     @ The default footer is shown below for reference.  Other examples
  1078   1078     @ of footers can be seen on the <a href="setup_skin">skins page</a>.
  1079   1079     @ See also the <a href="setup_editcss">CSS</a> and
  1080   1080     @ <a href="setup_header">header</a> editing screens.
  1081   1081     @ <blockquote><pre>
  1082   1082     @ %h(zDefaultFooter)
  1083   1083     @ </pre></blockquote>
  1084         -  style_footer();
         1084  +  style_footer_cmdref("configuration","area skin");
  1085   1085     db_end_transaction(0);
  1086   1086   }
  1087   1087   
  1088   1088   /*
  1089   1089   ** WEBPAGE: setup_logo
  1090   1090   */
  1091   1091   void setup_logo(void){
................................................................................
  1146   1146     @ <input type="submit" name="clr" value="Revert To Default" />
  1147   1147     @ </div></form>
  1148   1148     @
  1149   1149     @ <p><span class="note">Note:</span>  Your browser has probably cached the
  1150   1150     @ logo image, so you will probably need to press the Reload button on your
  1151   1151     @ browser after changing the logo to provoke your browser to reload the new
  1152   1152     @ logo image. </p>
  1153         -  style_footer();
         1153  +  style_footer_cmdref("configuration","area skin");
  1154   1154     db_end_transaction(0);
  1155   1155   }

Changes to src/skins.c.

   838    838         @ <input type="submit" name="load" value="Use This Skin">
   839    839         @ <input type="submit" name="del1" value="Delete This Skin">
   840    840         @ </form></li>
   841    841       }
   842    842     }
   843    843     db_finalize(&q);
   844    844     @ </ol>
   845         -  style_footer();
          845  +  style_footer_cmdref("configuration","area skin");
   846    846     db_end_transaction(0);
   847    847   }

Changes to src/style.c.

   112    112     if( g.thTrace ) Th_Trace("END_HEADER<br />\n", -1);
   113    113     Th_Unstore("title");   /* Avoid collisions with ticket field names */
   114    114     cgi_destination(CGI_BODY);
   115    115     g.cgiOutput = 1;
   116    116     headerHasBeenGenerated = 1;
   117    117     sideboxUsed = 0;
   118    118   }
          119  +
          120  +/*
          121  +** append a reference to command line to a web page
          122  +** and generate the footer
          123  +*/
          124  +void style_footer_cmdref( const char * const zCmd, const char * const zAddOn ){
          125  +  @ <div class="cmdref">
          126  +  if( zCmd ){
          127  +    @ See also command line help:
          128  +    @  <a href="help?cmd=%s(zCmd)">%s(zCmd)</a>
          129  +  }
          130  +  if( zAddOn ){
          131  +    @ %s(zAddOn)
          132  +  }
          133  +  @ </div>
          134  +  style_footer();
          135  +}
   119    136   
   120    137   /*
   121    138   ** Draw the footer at the bottom of the page.
   122    139   */
   123    140   void style_footer(void){
   124    141     const char *zFooter;
   125    142   
................................................................................
   237    254   @   html "<a href='$baseurl/setup_ulist'>Users</a> "
   238    255   @ }
   239    256   @ if {[info exists login]} {
   240    257   @   html "<a href='$baseurl/login'>Logout</a> "
   241    258   @ } else {
   242    259   @   html "<a href='$baseurl/login'>Login</a> "
   243    260   @ }
          261  +@ html "<small><sup><a href='$baseurl/help'>?</a></sup></small>"
   244    262   @ </th1></div>
   245    263   ;
   246    264   
   247    265   /*
   248    266   ** The default page footer
   249    267   */
   250    268   const char zDefaultFooter[] = 
................................................................................
   728    746       "format for artifact lines, no longer shunned",
   729    747       @   color: blue;
   730    748     },
   731    749     { "p.shunned",
   732    750       "format for artifact lines beeing shunned",
   733    751       @   color: blue;
   734    752     },
          753  +  { "a.hidden",
          754  +    "format for links, that should not be very visible",
          755  +    @   font-size: xx-small;
          756  +    @   color: #aaaaaa;
          757  +  },
          758  +  { "div.cmdhelp",
          759  +    "format for single command display on the gui help page",
          760  +    @   font-family: monospace;
          761  +    @   padding-left: 4em;
          762  +    @   padding-bottom: 1em;
          763  +    @   white-space: pre;
          764  +  },
          765  +  { "div.cmdref",
          766  +    "format for references to command line help entries the actual gui page."
          767  +    "set \"display\" to \"none\" to suppress the display",
          768  +    @   font-size: small;
          769  +    @   text-align: right;
          770  +    @   font-family: monospace;
          771  +    @   color: #777777;
          772  +  },
   735    773     { 0,
   736    774       0,
   737    775       0
   738    776     }
   739    777   };
   740    778   
   741    779   /*
................................................................................
   743    781   */
   744    782   void cgi_append_default_css(void) {
   745    783     int i;
   746    784   
   747    785     for (i=0;cssDefaultList[i].elementClass;i++){
   748    786       if (cssDefaultList[i].elementClass[0]){
   749    787         cgi_printf("/* %s */\n%s {\n%s\n}\n\n",
   750         -		 cssDefaultList[i].comment,
   751         -		 cssDefaultList[i].elementClass,
   752         -		 cssDefaultList[i].value
   753         -		);
          788  +                 cssDefaultList[i].comment,
          789  +                 cssDefaultList[i].elementClass,
          790  +                 cssDefaultList[i].value
          791  +                );
   754    792       }else{
   755    793         cgi_printf("%s",
   756         -		 cssDefaultList[i].value
   757         -		);
          794  +                 cssDefaultList[i].value
          795  +                );
   758    796       }
   759    797     }
   760    798   }
   761    799   
   762    800   /*
   763    801   ** WEBPAGE: style.css
   764    802   */

Changes to src/sync.c.

   130    130   ** Usage: %fossil pull ?URL? ?options?
   131    131   **
   132    132   ** Pull changes from a remote repository into the local repository.
   133    133   ** Use the "-R REPO" or "--repository REPO" command-line options
   134    134   ** to specify an alternative repository file.
   135    135   **
   136    136   ** If the URL is not specified, then the URL from the most recent
   137         -** clone, push, pull, remote-url, or sync command is used.
          137  +** <a>clone</a>, <a>push</a>, <a>pull</a>, <a>remote-url</a>, or <a>sync</a> command
          138  +** is used.
   138    139   **
   139    140   ** The URL specified normally becomes the new "remote-url" used for
   140    141   ** subsequent push, pull, and sync operations.  However, the "--once"
   141    142   ** command-line option makes the URL a one-time-use URL that is not
   142    143   ** saved.
   143    144   **
   144         -** See also: clone, push, sync, remote-url
          145  +** See also: <a>clone</a>, <a>push</a>, <a>sync</a>, <a>remote-url</a>
   145    146   */
   146    147   void pull_cmd(void){
   147    148     int syncFlags = process_sync_args();
   148    149     client_sync(0,1,0,syncFlags,0);
   149    150   }
   150    151   
   151    152   /*
................................................................................
   154    155   ** Usage: %fossil push ?URL? ?options?
   155    156   **
   156    157   ** Push changes in the local repository over into a remote repository.
   157    158   ** Use the "-R REPO" or "--repository REPO" command-line options
   158    159   ** to specify an alternative repository file.
   159    160   **
   160    161   ** If the URL is not specified, then the URL from the most recent
   161         -** clone, push, pull, remote-url, or sync command is used.
          162  +** <a>clone</a>, <a>push</a>, <a>pull</a>, <a>remote-url</a>, or <a>sync</a> command
          163  +** is used.
   162    164   **
   163    165   ** The URL specified normally becomes the new "remote-url" used for
   164         -** subsequent push, pull, and sync operations.  However, the "--once"
   165         -** command-line option makes the URL a one-time-use URL that is not
   166         -** saved.
          166  +** subsequent <a>push</a>, <a>pull</a>, and <a>sync</a> operations.  However,
          167  +** the "--once" command-line option makes the URL a one-time-use URL
          168  +** that is not saved.
   167    169   **
   168         -** See also: clone, pull, sync, remote-url
          170  +** See also: <a>clone</a>, <a>pull</a>, <a>sync</a>, <a>remote-url</a>
   169    171   */
   170    172   void push_cmd(void){
   171    173     process_sync_args();
   172    174     client_sync(1,0,0,0,0);
   173    175   }
   174    176   
   175    177   
   176    178   /*
   177    179   ** COMMAND: sync
   178    180   **
   179    181   ** Usage: %fossil sync ?URL? ?options?
   180    182   **
   181    183   ** Synchronize the local repository with a remote repository.  This is
   182         -** the equivalent of running both "push" and "pull" at the same time.
   183         -** Use the "-R REPO" or "--repository REPO" command-line options
          184  +** the equivalent of running both <a>push</a> and <a>pull</a> at the same
          185  +** time. Use the "-R REPO" or "--repository REPO" command-line options
   184    186   ** to specify an alternative repository file.
   185    187   **
   186    188   ** If a user-id and password are required, specify them as follows:
   187    189   **
   188    190   **     http://userid:password@www.domain.com:1234/path
   189    191   **
   190         -** If the URL is not specified, then the URL from the most recent successful
   191         -** clone, push, pull, remote-url, or sync command is used.
          192  +** If the URL is not specified, then the URL from the most recent
          193  +** successful <a>clone</a>, <a>push</a>, <a>pull</a>, <a>remote-url</a>, or <a>sync</a>
          194  +** command is used.
   192    195   **
   193    196   ** The URL specified normally becomes the new "remote-url" used for
   194         -** subsequent push, pull, and sync operations.  However, the "--once"
   195         -** command-line option makes the URL a one-time-use URL that is not
   196         -** saved.
          197  +** subsequent <a>push</a>, <a>pull</a>, and <a>sync</a> operations.  However,
          198  +** the "--once" command-line option makes the URL a one-time-use URL
          199  +** that is not saved.
   197    200   **
   198         -** See also:  clone, push, pull, remote-url
          201  +** See also:  <a>clone</a>, <a>push</a>, <a>pull</a>, <a>remote-url</a>
   199    202   */
   200    203   void sync_cmd(void){
   201    204     int syncFlags = process_sync_args();
   202    205     client_sync(1,1,0,syncFlags,0);
   203    206   }
   204    207   
   205    208   /*
   206    209   ** COMMAND: remote-url
   207    210   **
   208    211   ** Usage: %fossil remote-url ?URL|off?
   209    212   **
   210         -** Query and/or change the default server URL used by the "pull", "push",
   211         -** and "sync" commands.
          213  +** Query and/or change the default server URL used by the <a>pull</a>,
          214  +** <a>push</a>, and <a>sync</a> commands.
   212    215   **
   213         -** The remote-url is set automatically by a "clone" command or by any
   214         -** "sync", "push", or "pull" command that specifies an explicit URL.
   215         -** The default remote-url is used by auto-syncing and by "sync", "push",
   216         -** "pull" that omit the server URL.
          216  +** The remote-url is set automatically by a <a>clone</a> command or by any
          217  +** <a>sync</a>, <a>push</a>, or <a>pull</a> command that specifies an explicit
          218  +** URL. The default remote-url is used by auto-syncing and by
          219  +** <a>sync</a>, <a>push</a>, <a>pull</a> that omit the server URL.
   217    220   **
   218         -** See also: clone, push, pull, sync
          221  +** See also: <a>clone</a>, <a>push</a>, <a>pull</a>, <a>sync</a>
   219    222   */
   220    223   void remote_url_cmd(void){
   221    224     char *zUrl;
   222    225     db_find_and_open_repository(1);
   223    226     if( g.argc!=2 && g.argc!=3 ){
   224    227       usage("remote-url ?URL|off?");
   225    228     }

Changes to src/tag.c.

   316    316   **
   317    317   ** Run various subcommands to control tags and properties
   318    318   **
   319    319   **     %fossil tag add ?--raw? ?--propagate? TAGNAME CHECK-IN ?VALUE?
   320    320   **
   321    321   **         Add a new tag or property to CHECK-IN. The tag will
   322    322   **         be usable instead of a CHECK-IN in commands such as
   323         -**         update and merge.  If the --propagate flag is present,
          323  +**         <a>update</a> and <a>merge</a>.  If the --propagate flag is present,
   324    324   **         the tag value propages to all descendants of CHECK-IN
   325    325   **
   326    326   **     %fossil tag cancel ?--raw? TAGNAME CHECK-IN
   327    327   **
   328    328   **         Remove the tag TAGNAME from CHECK-IN, and also remove
   329    329   **         the propagation of the tag to any descendants.
   330    330   **
................................................................................
   343    343   ** not use this option to make changes unless you are sure what
   344    344   ** you are doing.
   345    345   **
   346    346   ** If you need to use a tagname that might be confused with
   347    347   ** a hexadecimal baseline or artifact ID, you can explicitly
   348    348   ** disambiguate it by prefixing it with "tag:". For instance:
   349    349   **
   350         -**   fossil update decaf
          350  +**   fossil <a>update</a> decaf
   351    351   **
   352    352   ** will be taken as an artifact or baseline ID and fossil will
   353    353   ** probably complain that no such revision was found. However
   354    354   **
   355         -**   fossil update tag:decaf
          355  +**   fossil <a>update</a> tag:decaf
   356    356   **
   357    357   ** will assume that "decaf" is a tag/branch name.
   358    358   **
   359    359   ** only allow --date-override and --user-override in 
   360    360   **   %fossil tag add --date-override 'YYYY-MMM-DD HH:MM:SS' \\
   361    361   **                   --user-override user 
   362    362   ** in order to import history from other scm systems
................................................................................
   529    529         @ %h(zName)</a></li>
   530    530       }else{
   531    531         @ <li><span class="tagDsp">%h(zName)</span></li>
   532    532       }
   533    533     }
   534    534     @ </ul>
   535    535     db_finalize(&q);
   536         -  style_footer();
          536  +  style_footer_cmdref("tag","list");
   537    537   }
   538    538   
   539    539   /*
   540    540   ** Draw the names of all tags added to check-in rid.  Only tags
   541    541   ** that are directly applied to rid are named.  Propagated tags
   542    542   ** are omitted.
   543    543   */

Changes to src/timeline.c.

   950    950     }
   951    951     blob_zero(&sql);
   952    952     db_prepare(&q, "SELECT * FROM timeline ORDER BY timestamp DESC /*scan*/");
   953    953     @ <h2>%b(&desc)</h2>
   954    954     blob_reset(&desc);
   955    955     www_print_timeline(&q, tmFlags, 0);
   956    956     db_finalize(&q);
   957         -  style_footer();
          957  +  style_footer_cmdref("timeline",0);
   958    958   }
   959    959   
   960    960   /*
   961    961   ** The input query q selects various records.  Print a human-readable
   962    962   ** summary of those records.
   963    963   **
   964    964   ** Limit the number of entries printed to nLine.
................................................................................
  1089   1089   **
  1090   1090   ** The optional TYPE argument may any types supported by the /timeline
  1091   1091   ** page. For example:
  1092   1092   **
  1093   1093   **     w  = wiki commits only
  1094   1094   **     ci = file commits only
  1095   1095   **     t  = tickets only
         1096  +**     e  = events only
         1097  +**
         1098  +** The information can also be used in the gui:
         1099  +**  * go to the <a href="timeline">timeline</a> page
         1100  +**  * or the "history" links on the dedicated details views(events,
         1101  +**    files, tickets, ..)
         1102  +**
         1103  +** See also: <a>descendants</a>
  1096   1104   */
  1097   1105   void timeline_cmd(void){
  1098   1106     Stmt q;
  1099   1107     int n, k;
  1100   1108     const char *zCount;
  1101   1109     const char *zType;
  1102   1110     char *zOrigin;

Changes to src/tkt.c.

   361    361       }
   362    362       if( cnt ){
   363    363         @ </ul>
   364    364       }
   365    365       db_finalize(&q);
   366    366     }
   367    367    
   368         -  style_footer();
          368  +  style_footer_cmdref("info",0);
   369    369   }
   370    370   
   371    371   /*
   372    372   ** TH command:   append_field FIELD STRING
   373    373   **
   374    374   ** FIELD is the name of a database column to which we might want
   375    375   ** to append text.  STRING is the text to be appended to that
................................................................................
   530    530     if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br />\n", -1);
   531    531     if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){
   532    532       cgi_redirect(mprintf("%s/tktview/%s", g.zBaseURL, zNewUuid));
   533    533       return;
   534    534     }
   535    535     @ </form>
   536    536     if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
   537         -  style_footer();
          537  +  style_footer_cmdref("ticket","add");
   538    538   }
   539    539   
   540    540   /*
   541    541   ** WEBPAGE: tktedit
   542    542   ** WEBPAGE: debug_tktedit
   543    543   **
   544    544   ** Edit a ticket.  The ticket is identified by the name CGI parameter.
................................................................................
   597    597     if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br />\n", -1);
   598    598     if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){
   599    599       cgi_redirect(mprintf("%s/tktview/%s", g.zBaseURL, zName));
   600    600       return;
   601    601     }
   602    602     @ </form>
   603    603     if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
   604         -  style_footer();
          604  +  style_footer_cmdref("ticket","change");
   605    605   }
   606    606   
   607    607   /*
   608    608   ** Check the ticket table schema in zSchema to see if it appears to
   609    609   ** be well-formed.  If everything is OK, return NULL.  If something is
   610    610   ** amiss, then return a pointer to a string (obtained from malloc) that
   611    611   ** describes the problem.
................................................................................
   703    703            timeline_query_for_www(), tagid, zFullUuid, zFullUuid, zFullUuid
   704    704       );
   705    705     }
   706    706     db_prepare(&q, zSQL);
   707    707     free(zSQL);
   708    708     www_print_timeline(&q, TIMELINE_ARTID, 0);
   709    709     db_finalize(&q);
   710         -  style_footer();
          710  +  style_footer_cmdref("timeline",0);
   711    711   }
   712    712   
   713    713   /*
   714    714   ** WEBPAGE: tkthistory
   715    715   ** URL: /tkthistory?name=TICKETUUID
   716    716   **
   717    717   ** Show the complete change history for a single ticket
................................................................................
   790    790           @ </p>
   791    791           ticket_output_change_artifact(&m);
   792    792         }
   793    793         manifest_clear(&m);
   794    794       }
   795    795     }
   796    796     db_finalize(&q);
   797         -  style_footer();
          797  +  style_footer_cmdref("timeline",0);
   798    798   }
   799    799   
   800    800   /*
   801    801   ** Return TRUE if the given BLOB contains a newline character.
   802    802   */
   803    803   static int contains_newline(Blob *p){
   804    804     const char *z = blob_str(p);
................................................................................
   894    894   **
   895    895   **     %fossil ticket add FIELD VALUE ?FIELD VALUE .. ? ?-q|--quote?
   896    896   **
   897    897   **         like set, but create a new ticket with the given values.
   898    898   **
   899    899   ** The values in set|add are not validated against the definitions
   900    900   ** given in "Ticket Common Script".
          901  +**
          902  +** All this stuff can also be done in the gui:
          903  +**  * Go the the <a href="reportlist">Tickets</a> page
   901    904   */
   902    905   void ticket_cmd(void){
   903    906     int n;
   904    907   
   905    908     /* do some ints, we want to be inside a checkout */
   906    909     db_must_be_within_tree();
   907    910     db_find_and_open_repository(1);

Changes to src/undo.c.

   242    242   }
   243    243   
   244    244   /*
   245    245   ** COMMAND: undo
   246    246   **
   247    247   ** Usage: %fossil undo ?FILENAME...?
   248    248   **
   249         -** Undo the most recent update or merge or revert operation.  If FILENAME is
   250         -** specified then restore the content of the named file(s) but otherwise
   251         -** leave the update or merge or revert in effect.
          249  +** Undo the most recent <a>update</a> or <a>merge</a> or <a>revert</a> operation.
          250  +** If FILENAME is specified then restore the content of the named
          251  +** file(s) but otherwise leave the <a>update</a>, <a>merge</a> or <a>revert</a>
          252  +** in effect.
   252    253   **
   253         -** A single level of undo/redo is supported.  The undo/redo stack
   254         -** is cleared by the commit and checkout commands.
          254  +** A single level of <a>undo</a>/<a>redo</a> is supported. The undo/<a>redo</a>
          255  +** stack is cleared by the <a>commit</a> and <a>checkout</a> commands.
   255    256   */
   256    257   void undo_cmd(void){
   257    258     int undo_available;
   258    259     db_must_be_within_tree();
   259    260     db_begin_transaction();
   260    261     undo_available = db_lget_int("undo_available", 0);
   261    262     if( g.argc==2 ){
................................................................................
   281    282   }
   282    283   
   283    284   /*
   284    285   ** COMMAND: redo
   285    286   **
   286    287   ** Usage: %fossil redo ?FILENAME...?
   287    288   **
   288         -** Redo an update or merge or revert operation that has been undone
   289         -** by the undo command.  If FILENAME is specified then restore the changes
   290         -** associated with the named file(s) but otherwise leave the update
   291         -** or merge undone.
          289  +** Redo an <a>update</a>, <a>merge</a> or <a>revert</a> operation that has been
          290  +** undone by the <a>undo</a> command. If FILENAME is specified then restore
          291  +** the changes associated with the named file(s) but otherwise leave the
          292  +** update or merge undone.
   292    293   **
   293         -** A single level of undo/redo is supported.  The undo/redo stack
   294         -** is cleared by the commit and checkout commands.
          294  +** A single level of <a>undo</a>/<a>redo</a> is supported.  The <a>undo</a>/<a>redo</a>
          295  +** stack is cleared by the <a>commit</a> and <a>checkout</a> commands.
   295    296   */
   296    297   void redo_cmd(void){
   297    298     int undo_available;
   298    299     db_must_be_within_tree();
   299    300     db_begin_transaction();
   300    301     undo_available = db_lget_int("undo_available", 0);
   301    302     if( g.argc==2 ){

Changes to src/update.c.

   346    346   ** Revert to the current repository version of FILE, or to
   347    347   ** the version associated with baseline REVISION if the -r flag
   348    348   ** appears.
   349    349   **
   350    350   ** Revert all files if no file name is provided.
   351    351   **
   352    352   ** If a file is reverted accidently, it can be restored using
   353         -** the "fossil undo" command.
          353  +** the <a>undo</a> command.
   354    354   */
   355    355   void revert_cmd(void){
   356    356     const char *zFile;
   357    357     const char *zRevision;
   358    358     Blob record;
   359    359     int i;
   360    360     int errCode;

Changes to src/user.c.

   169    169   **        Create a new user in the repository.  Users can never be
   170    170   **        deleted.  They can be denied all access but they must continue
   171    171   **        to exist in the database.
   172    172   **
   173    173   **    %fossil user password USERNAME ?PASSWORD?
   174    174   **
   175    175   **        Change the web access password for a user.
          176  +**        Users can change their own password on the
          177  +**        <a href="login">Login/Logout</a> gui page.
          178  +**
          179  +** Administrators can also use the gui: 
          180  +**  *  Go to page <a href="setup">Admin</a>
          181  +**  ** and click <a href="setup_ulist">Users</a>
   176    182   */
   177    183   void user_cmd(void){
   178    184     int n;
   179    185     db_find_and_open_repository(1);
   180    186     if( g.argc<3 ){
   181    187       usage("capabilities|default|list|new|password ...");
   182    188     }

Changes to src/wiki.c.

   162    162       @ <li> <a href="%s(g.zBaseURL)/wcontent">List of All Wiki Pages</a>
   163    163       @      available on this server.</li>
   164    164       @ <li> <form method="get" action="%s(g.zBaseURL)/wfind"><div>
   165    165       @     Search wiki titles: <input type="text" name="title"/>
   166    166       @  &nbsp; <input type="submit" /></div></form>
   167    167       @ </li>
   168    168       @ </ul>
   169         -    style_footer();
          169  +    style_footer_cmdref("wiki",0);
   170    170       return;
   171    171     }
   172    172     if( check_name(zPageName) ) return;
   173    173     isSandbox = is_sandbox(zPageName);
   174    174     if( isSandbox ){
   175    175       zBody = db_get("sandbox",zBody);
   176    176     }else{
................................................................................
   250    250       @ </ul>
   251    251     }
   252    252     db_finalize(&q);
   253    253    
   254    254     if( !isSandbox ){
   255    255       manifest_clear(&m);
   256    256     }
          257  +  /* don'tshow the help cross reference, because we are rendering
          258  +  ** the wiki conten!
          259  +  ** style_footer_cmdref("wiki","export");
          260  +  */
   257    261     style_footer();
   258    262   }
   259    263   
   260    264   /*
   261    265   ** WEBPAGE: wikiedit
   262    266   ** URL: /wikiedit?name=PAGENAME
   263    267   */
................................................................................
   378    382     @ <input type="submit" name="preview" value="Preview Your Changes" />
   379    383     @ <input type="submit" name="submit" value="Apply These Changes" />
   380    384     @ <input type="submit" name="cancel" value="Cancel" />
   381    385     @ </div></form>
   382    386     if( !isSandbox ){
   383    387       manifest_clear(&m);
   384    388     }
   385         -  style_footer();
          389  +  style_footer_cmdref("wiki"," / <a href=\"wiki_rules\">wiki format</a>");
   386    390   }
   387    391   
   388    392   /*
   389    393   ** WEBPAGE: wikinew
   390    394   ** URL /wikinew
   391    395   **
   392    396   ** Prompt the user to enter the name of a new wiki page.  Then redirect
................................................................................
   411    415     @ <input style="width: 35;" type="text" name="name" value="%h(zName)" />
   412    416     @ <input type="submit" value="Create" />
   413    417     @ </p></form>
   414    418     if( zName[0] ){
   415    419       @ <p><span class="wikiError">
   416    420       @ "%h(zName)" is not a valid wiki page name!</span></p>
   417    421     }
   418         -  style_footer();
          422  +  style_footer_cmdref("wiki","create");
   419    423   }
   420    424   
   421    425   
   422    426   /*
   423    427   ** Append the wiki text for an remark to the end of the given BLOB.
   424    428   */
   425    429   static void appendRemark(Blob *p){
................................................................................
   597    601                    "ORDER BY mtime DESC",
   598    602                    timeline_query_for_www(), zPageName, zPageName);
   599    603     db_prepare(&q, zSQL);
   600    604     free(zSQL);
   601    605     zWikiPageName = zPageName;
   602    606     www_print_timeline(&q, TIMELINE_ARTID, wiki_history_extra);
   603    607     db_finalize(&q);
   604         -  style_footer();
          608  +  style_footer_cmdref("timeline",0);
   605    609   }
   606    610   
   607    611   /*
   608    612   ** WEBPAGE: wdiff
   609    613   ** URL: /whistory?name=PAGENAME&a=RID1&b=RID2
   610    614   **
   611    615   ** Show the difference between two wiki pages.
................................................................................
   691    695         @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)">%h(zName)</a></li>
   692    696       }else if( showAll ){
   693    697         @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)"><s>%h(zName)</s></a></li>
   694    698       }
   695    699     }
   696    700     db_finalize(&q);
   697    701     @ </ul>
   698         -  style_footer();
          702  +  style_footer_cmdref("wiki","list");
   699    703   }
   700    704   
   701    705   /*
   702    706   ** WEBPAGE: wfind
   703    707   **
   704    708   ** URL: /wfind?title=TITLE
   705    709   ** List all wiki pages whose titles contain the search text
................................................................................
   897    901   **        Lists the artifact ID and/or Date of last change along with
   898    902   **        each entry name, delimited by the -s char.
   899    903   **
   900    904   **     %fossil wiki diff ?ARTIFACT? ?-f infile[=stdin]? EntryName
   901    905   **
   902    906   **        Diffs the local copy of a page with a given version (defaulting
   903    907   **        to the head version).
          908  +**
          909  +** The wiki format is explained on the <a href="wiki">Wiki</a> subpage
          910  +** <a href="wiki_rules">Formatting rules</a>.
   904    911   */
   905    912   void wiki_cmd(void){
   906    913     int n;
   907    914     db_find_and_open_repository(1);
   908    915     if( g.argc<3 ){
   909    916       goto wiki_cmd_usage;
   910    917     }

Changes to src/winhttp.c.

    87     87       zHdr[amt] = 0;
    88     88       z = strstr(zHdr, "\r\n\r\n");
    89     89       if( z ){
    90     90         wanted = find_content_length(zHdr) + (&z[4]-zHdr) - amt;
    91     91         break;
    92     92       }
    93     93     }
           94  +  if( g.fHttpTrace ){
           95  +    fprintf(stderr,"HTTPTRACE(%p): got header '%s'\n",pAppData,zHdr);
           96  +  }
    94     97     if( amt>=sizeof(zHdr) ) goto end_request;
    95     98     out = fopen(zRequestFName, "wb");
    96     99     if( out==0 ) goto end_request;
    97    100     fwrite(zHdr, 1, amt, out);
    98    101     while( wanted>0 ){
    99    102       got = recv(p->s, zHdr, sizeof(zHdr), 0);
   100    103       if( got==SOCKET_ERROR ) goto end_request;
................................................................................
   107    110     }
   108    111     fclose(out);
   109    112     out = 0;
   110    113     sprintf(zCmd, "\"%s\" http \"%s\" %s %s %s%s",
   111    114       _pgmptr, g.zRepositoryName, zRequestFName, zReplyFName, 
   112    115       inet_ntoa(p->addr.sin_addr), p->zNotFound
   113    116     );
          117  +  if( g.fHttpTrace ){
          118  +    fprintf(stderr,"HTTPTRACE(%p): calling '%s'\n",pAppData,zCmd);
          119  +  }
   114    120     portable_system(zCmd);
   115    121     in = fopen(zReplyFName, "rb");
   116    122     if( in ){
          123  +    if( g.fHttpTrace ){
          124  +      fprintf(stderr,"HTTPTRACE(%p): read reply '%s'\n",pAppData,zReplyFName);
          125  +    }
   117    126       while( (got = fread(zHdr, 1, sizeof(zHdr), in))>0 ){
   118    127         send(p->s, zHdr, got, 0);
   119    128       }
          129  +  }else{
          130  +    if( g.fHttpTrace ){
          131  +      fprintf(stderr,"HTTPTRACE(%p): no reply '%s'\n",pAppData,zReplyFName);
          132  +    }
   120    133     }
   121    134   
   122    135   end_request:
   123    136     if( out ) fclose(out);
   124    137     if( in ) fclose(in);
   125    138     closesocket(p->s);
   126    139     unlink(zRequestFName);
................................................................................
   210    223         fossil_fatal("error from accept()");
   211    224       }
   212    225       p = fossil_malloc( sizeof(*p) );
   213    226       p->id = ++idCnt;
   214    227       p->s = client;
   215    228       p->addr = client_addr;
   216    229       p->zNotFound = zNotFoundOption;
          230  +    if( g.fHttpTrace ){
          231  +      fprintf(stderr,"HTTPTRACE(%p): start new request thread\n",p);
          232  +    }
   217    233       _beginthread(win32_process_one_http_request, 0, (void*)p);
   218    234     }
   219    235     closesocket(s);
   220    236     WSACleanup();
   221    237   }
   222    238   
   223    239   #endif /* _WIN32  -- This code is for win32 only */

Changes to src/zip.c.

   374    374   }
   375    375   
   376    376   /*
   377    377   ** COMMAND: zip
   378    378   **
   379    379   ** Usage: %fossil zip VERSION OUTPUTFILE [--name DIRECTORYNAME]
   380    380   **
   381         -** Generate a ZIP archive for a specified version.  If the --name option is
   382         -** used, it argument becomes the name of the top-level directory in the
          381  +** Generate a ZIP archive for a specified version.  If the --name option
          382  +** is used, it argument becomes the name of the top-level directory in the
   383    383   ** resulting ZIP archive.  If --name is omitted, the top-level directory
   384    384   ** named is derived from the project name, the check-in date and time, and
   385    385   ** the artifact ID of the check-in.
          386  +**
          387  +** The zip download can also be done through the Check-in detail view,
          388  +** accessible from the <a href="timeline">timeline</a> page.
   386    389   */
   387    390   void baseline_zip_cmd(void){
   388    391     int rid;
   389    392     Blob zip;
   390    393     const char *zName;
   391    394     zName = find_option("name", 0, 1);
   392    395     db_find_and_open_repository(1);

Changes to win/Makefile.PellesCGMake.

    55     55   # define linker command and options
    56     56   LINK=$(PellesCDir)/bin/polink.exe
    57     57   LINKFLAGS=-subsystem:console -machine:$(TARGETMACHINE_LN) /LIBPATH:$(PellesCDir)\lib\win$(TARGETEXTEND) /LIBPATH:$(PellesCDir)\lib kernel32.lib advapi32.lib delayimp$(TARGETEXTEND).lib Wsock32.lib Crtmt$(TARGETEXTEND).lib
    58     58   
    59     59   # define standard C-compiler and flags, used to compile
    60     60   # the fossil binary. Some special definitions follow for
    61     61   # special files follow
           62  +# Pelles C doesn't support _pgmptr in it's includes/libs, so map it to argv[0]
    62     63   CC=$(PellesCDir)\bin\pocc.exe
    63         -DEFINES=-DFOSSIL_I18N=0 -Dstrncasecmp=memicmp -Dstrcasecmp=stricmp 
           64  +DEFINES=-DFOSSIL_I18N=0 -Dstrncasecmp=memicmp -Dstrcasecmp=stricmp -D_pgmptr=g.argv[0]
    64     65   CCFLAGS=-T$(TARGETMACHINE_CC)-coff -Ot -W2 -Gd -Go -Ze -MT $(DEFINES)
    65     66   INCLUDE=/I $(PellesCDir)\Include\Win /I $(PellesCDir)\Include /I $(ZLIBSRCDIR) /I $(SRCDIR)
    66     67   
    67     68   # define commands for building the windows resource files
    68     69   RESOURCE=fossil.res
    69     70   RC=$(PellesCDir)\bin\porc.exe
    70     71   RCFLAGS=$(INCLUDE) -D__POCC__=1 -D_M_X$(TARGETVERSION)

Changes to www/index.wiki.

   121    121        [http://www.mail-archive.com/fossil-users@lists.fossil-scm.org | archives]
   122    122        available for discussing fossil issues.
   123    123     *  [./stats.wiki | Performance statistics] taken from real-world projects
   124    124        hosted on fossil.
   125    125     *  How to [./shunning.wiki | delete content] from a fossil repository.
   126    126     *  How Fossil does [./password.wiki | password management].
   127    127     *  Some (unfinished but expanding) extended
   128         -      [./reference.wiki | reference documentation] for the fossil command line.
          128  +      [./reference.wiki | reference documentation] for the fossil
          129  +       [/help|command line].
   129    130     *  Documentation on the
   130    131        [http://www.sqliteconcepts.org/THManual.pdf | TH1 Script Language] used
   131    132        to configure the ticketing subsystem.
   132    133     *  A free hosting server for Fossil repositories is available at
   133    134        [http://chiselapp.com/].
   134    135     *  How to [./server.wiki | set up a server] for your repository.
   135    136     *  Customizing the [./custom_ticket.wiki | ticket system].

Changes to www/reference.wiki.

    48     48       guaranteed and fast access to the sources & docs (your cloned fossil
    49     49       repository).
    50     50   <br /><br /> <br />
    51     51     <b>You should</b> probably start interacting with fossil at the command
    52     52     line by asking it what it can
    53     53     do:&nbsp;&nbsp;&nbsp;&nbsp;<a name="tof">&#710;</a>
    54     54   
    55         -  <code>$ fossil help</code><nowiki><pre>
           55  +  <code>$ fossil [/help|help]</code>
           56  +
           57  +  This will generate output in the form:<pre>
    56     58   Usage: fossil help COMMAND.
    57     59   Available COMMANDs:</pre><table width="80%"
    58     60                             style="font-family: fixed, courier, monospace;">
    59     61     <tr>
    60         -    <td><a href="#add">add</a>*</td>
    61         -    <td><a href="#checkout">co</a>*</td>
    62         -    <td><a href="#http">http</a></td>
    63         -    <td><a href="#rebuild">rebuild</a></td>
    64         -    <td><a href="#sync">sync</a>*</td>
           62  +    <td width="20%">[/help?cmd=add|add]</td>
           63  +    <td>[/help?cmd=co|co]</td>
           64  +    <td width="20%">[/help?cmd=info|info]</td>
           65  +    <td width="20%">[/help?cmd=remote-url|remote-url]</td>
           66  +    <td width="20%">[/help?cmd=ticket|ticket]</td>
    65     67     </tr>
    66     68     <tr>
    67         -    <td><a href="#all">all</a>*</td>
    68         -    <td><a href="#commit">commit</a></td>
    69         -    <td><a href="#info">info</a></td>
    70         -    <td><a href="#reconstruct">reconstruct</a></td>
    71         -    <td><a href="#tag">tag</a></td>
           69  +    <td>..</td>
           70  +    <td>&nbsp;</td>
           71  +    <td>&nbsp;</td>
           72  +    <td>&nbsp;</td>
           73  +    <td>&nbsp;</td>
    72     74     </tr>
    73         -  <tr>
    74         -    <td><a href="#branch">branch</a></td>
    75         -    <td><a href="#configuration">configuration</a></td>
    76         -    <td><a href="#leaves">leaves</a></td>
    77         -    <td><a href="#redo">redo</a></td>
    78         -    <td><a href="#timeline">timeline</a></td>
    79         -  </tr>
    80         -  <tr>
    81         -    <td><a href="#cgi">cgi</a>*</td>
    82         -    <td><a href="#deconstruct">deconstruct</a></td>
    83         -    <td><a href="#ls">ls</a>*</td>
    84         -    <td><a href="#mv">rename</a>*</td>
    85         -    <td><a href="#server">ui</a></td>
    86         -  </tr>
    87         -  <tr>
    88         -    <td><a href="#changes">changes</a>*</td>
    89         -    <td><a href="#rm">del</a>*</td>
    90         -    <td><a href="#merge">merge</a></td>
    91         -    <td><a href="#revert">revert</a></td>
    92         -    <td><a href="#undo">undo</a></td>
    93         -  </tr>
    94         -  <tr>
    95         -    <td><a href="#checkout">checkout</a>*</td>
    96         -    <td><a href="#descendants">descendants</a></td>
    97         -    <td><a href="#mv">mv</a>*</td>
    98         -    <td><a href="#rm">rm</a>*</td>
    99         -    <td><a href="#setting">unset</a></td>
   100         -  </tr>
   101         -  <tr>
   102         -    <td><a href="#commit">ci</a></td>
   103         -    <td><a href="#diff">diff</a></td>
   104         -    <td><a href="#new">new</a>*</td>
   105         -    <td><a href="#rstats">rstats</a></td>
   106         -    <td><a href="#update">update</a>*</td>
   107         -  </tr>
   108         -  <tr>
   109         -    <td><a href="#clean">clean</a></td>
   110         -    <td><a href="#extra">extra</a>*</td>
   111         -    <td><a href="#open">open</a></td>
   112         -    <td><a href="#server">server</a></td>
   113         -    <td><a href="#user">user</a></td>
   114         -  </tr>
   115         -  <tr>
   116         -    <td><a href="#clone">clone</a></td>
   117         -    <td><a href="#diff">gdiff</a></td>
   118         -    <td><a href="#pull">pull</a></td>
   119         -    <td><a href="#setting">settings</a></td>
   120         -    <td><a href="#version">version</a>*</td>
   121         -  </tr>
   122         -  <tr>
   123         -    <td><a href="#close">close</a></td>
   124         -    <td><a href="#help">help</a></td>
   125         -    <td><a href="#push">push</a></td>
   126         -    <td><a href="#status">status</a>*</td>
   127         -    <td><a href="#wiki">wiki</a></td>
   128         -  </tr>
   129         -</table><nowiki><pre>
           75  +</table><pre>
   130     76   This is fossil version [a89b436bc9] 2009-02-11 05:00:02 UTC
   131     77   </pre>
   132         -<b>What follows</b> is a survey of what you get if you type<code>
   133         -fossil&nbsp;help&nbsp;<i>command</i> </code>for all of the
   134         -commands listed above.  There are links to individual pages for each
   135         -of them; pages with content (commands marked with a '*' are done) go
   136         -into the reason for a command in a bit more depth than the program help.
   137         -<pre>
   138         -<hr><a href="#tof">&#710;</a>
   139         -    <a name="add">Usage: </a><code><a href="cmd_add.wiki">fossil add</a></code> FILE...
   140         -    Make arrangements to add one or more files to the current checkout
   141         -    at the next commit.
           78  +
           79  +
           80  +  This information can also viewed in the fossil gui using the url
           81  +  PROJEKT-BASEURL/[/help|help]. You'll see a web page, listing all
           82  +  available commands in the current fossil build.
           83  +
           84  +  Each listed command is a link to a web page, displaying the detailed
           85  +  command line help for the appropriate command.
           86  +
           87  +  There are links to individual wiki pages for each command. These pages
           88  +  are named <kbd>cmd_<i>COMMAND-NAME</i></kbd>. These pages are not
           89  +  defined for all commands - it's a work in progress. Existing pages give
           90  +  more detailed description of the corresponding command.
   142     91   
   143         -<hr><a href="#tof">&#710;</a>
   144         -    <a name="all">Usage: </a><code><a href="cmd_all.wiki">fossil all</a></code> (list|pull|push|rebuild|sync)
   145         -    The ~/.fossil file records the location of all repositories for a
   146         -    user.  This command performs certain operations on all repositories
   147         -    that can be useful before or after a period of disconnection operation.
           92  +  <h3>Caveats</h3>
           93  +  This reference is complete concerning the [/help|list] of commands
           94  +  and the detailed command line reference. It's always in sync with the
           95  +  used fossil build, because it uses the original command help, which is
           96  +  compiled into the binary.
   148     97   
   149         -    On Win32 systems, this file is located in %LOCALAPPDATA%, %APDDATA%
   150         -    or %HOMEPATH% and is named _fossil.
   151         -
   152         -    Available operations are:
   153         -
   154         -    list       Display the location of all repositories
   155         -
   156         -    pull       Run a "pull" operation on all repositories
   157         -
   158         -    push       Run a "push" on all repositories
   159         -
   160         -    rebuild    Rebuild on all repositories
   161         -
   162         -    sync       Run a "sync" on all repositories
           98  +  Additional, in-depth information in the wiki part is not available for
           99  +  all commands.
          100  +  
          101  +  There are several bits of <b>fossil</b> that are not addressed
          102  +  in the help for commands (special wiki directories, special users, etc.)
          103  +  so they are (currently) not addressed here.  Clarity and brevity may be
          104  +  sacrificed for expediency at the authors indiscretion.  All spelling and
          105  +  grammatical mistakes are somebody elses fault.<code>  void * </code>
          106  +  prohibited where<code> __C_PLUS_PLUS__ </code>. Title and taxes extra.
          107  +  Not valid in Hooptigonia.
   163    108   
   164         -    Respositories are automatically added to the set of known repositories
   165         -    when one of the following commands against the repository: clone, info,
   166         -    pull, push, or sync
   167         -
   168         -<hr><a href="#tof">&#710;</a>
   169         -    <a name="branch">Usage: </a><code><a href="cmd_branch.wiki">fossil branch</a></code> SUBCOMMAND ... ?-R|--repository FILE?
   170         -
   171         -Run various subcommands on the branches of the open repository or
   172         -of the repository identified by the -R or --repository option.
   173         -
   174         -   fossil branch new BRANCH-NAME BASIS ?-bgcolor COLOR?
   175         -
   176         -       Create a new branch BRANCH-NAME off of check-in BASIS.
   177         -       You can optionally give the branch a default color.
   178         -
   179         -   fossil branch list
   180         -
   181         -       List all branches
   182         -
   183         -<hr><a href="#tof">&#710;</a>
   184         -    <a name="cgi">Usage: </a><a href="cmd_cgi.wiki">fossil cgi</a> SCRIPT
   185         -    The SCRIPT argument is the name of a file that is the CGI script
   186         -    that is being run.  The command name, "cgi", may be omitted if
   187         -    the GATEWAY_INTERFACE environment variable is set to "CGI" (which
   188         -    should always be the case for CGI scripts run by a webserver.)  The
   189         -    SCRIPT file should look something like this:
   190         -
   191         -    #!/usr/bin/fossil
   192         -    repository: /home/somebody/project.db
   193         -
   194         -    The second line defines the name of the repository.  After locating
   195         -    the repository, fossil will generate a webpage on stdout based on
   196         -    the values of standard CGI environment variables.
   197         -
   198         -<hr><a href="#tof">&#710;</a>
   199         -    <a name="changes">Usage: </a><a href="cmd_changes.wiki">fossil changes</a>
   200         -    Report on the edit status of all files in the current checkout.
   201         -    See also the "status" and "extra" commands.
   202         -
   203         -<hr><a href="#tof">&#710;</a>
   204         -    <a name="checkout">Usage: </a><a href="cmd_checkout.wiki">fossil checkout</a> VERSION ?-f|--force?
   205         -    Check out a version specified on the command-line.  This command
   206         -    will not overwrite edited files in the current checkout unless
   207         -    the --force option appears on the command-line.
   208         -
   209         -    See also the "update" command.
   210         -
   211         -<hr><a href="#tof">&#710;</a>
   212         -    <a name="commit">Usage: </a><a href="cmd_commit.wiki">fossil commit</a> ?-m COMMENT? ?--nosign? ?FILE...?    fossil ci  ...  (as above)
   213         -
   214         -    Create a new version containing all of the changes in the current
   215         -    checkout.  You will be prompted to enter a check-in comment unless
   216         -    the "-m" option is used to specify a comment line.  You will be
   217         -    prompted for your GPG passphrase in order to sign the new manifest
   218         -    unless the "--nosign" option is used.  All files that have
   219         -    changed will be committed unless some subset of files is specified
   220         -    on the command line.
   221         -
   222         -<hr><a href="#tof">&#710;</a>
   223         -    <a name="clean">Usage: </a><a href="cmd_clean.wiki">fossil clean</a> ?-all?
   224         -    Delete all "extra" files in the source tree.  "Extra" files are
   225         -    files that are not officially part of the checkout.  See also
   226         -    the "extra" command. This operation cannot be undone.
   227         -
   228         -    You will be prompted before removing each file. If you are
   229         -    sure you wish to remove all "extra" files you can specify the
   230         -    optional -all flag.
   231         -
   232         -<hr><a href="#tof">&#710;</a>
   233         -    <a name="clone">Usage: </a><a href="cmd_clone.wiki">fossil clone</a> URL FILENAME
   234         -    Make a clone of a repository specified by URL in the local
   235         -    file named FILENAME.
   236         -
   237         -<hr><a href="#tof">&#710;</a>
   238         -    <a name="close">Usage: </a><a href="cmd_close.wiki">fossil close</a> ?-f|--force?
   239         -    The opposite of "open".  Close the current database connection.
   240         -    Require a -f or --force flag if there are unsaved changed in the
   241         -    current check-out.
   242         -
   243         -<hr><a href="#tof">&#710;</a>
   244         -    <a name="configuration">Usage: </a><a href="cmd_configure.wiki">fossil configuration</a> METHOD ...
   245         -    Where METHOD is one of: export import merge pull push reset.  All methods
   246         -    accept the -R or --repository option to specific a repository.
   247         -
   248         -    fossil configuration export AREA FILENAME
   249         -
   250         -    Write to FILENAME exported configuraton information for AREA.
   251         -    AREA can be one of:  all ticket skin project
   252         -
   253         -    fossil configuration import FILENAME
   254         -
   255         -    Read a configuration from FILENAME, overwriting the current
   256         -    configuration.
   257         -
   258         -    fossil configuration merge FILENAME
   259         -
   260         -    Read a configuration from FILENAME and merge its values into
   261         -    the current configuration.  Existing values take priority over
   262         -    values read from FILENAME.
   263         -
   264         -    fossil configuration pull AREA ?URL?
   265         -
   266         -    Pull and install the configuration from a different server
   267         -    identified by URL.  If no URL is specified, then the default
   268         -    server is used.
   269         -    fossil configuration push AREA ?URL?
   270         -
   271         -    Push the local configuration into the remote server identified
   272         -    by URL.  Admin privilege is required on the remote server for
   273         -    this to work.
   274         -
   275         -    fossil configuration reset AREA
   276         -
   277         -    Restore the configuration to the default.  AREA as above.
   278         -
   279         -    WARNING: Do not import, merge, or pull configurations from an untrusted
   280         -    source.  The inbound configuration is not checked for safety and can
   281         -    introduce security vulnerabilities.
   282         -
   283         -<hr><a href="#tof">&#710;</a>
   284         -    COMMAND: deconstruct
   285         -    <a name="deconstruct">Usage: </a><a href="cmd_deconstruct.wiki">fossil deconstruct</a> ?-R|--repository REPOSITORY? DESTINATION
   286         -    Populates the indicated DESTINATION directory with copies of all
   287         -    artifcats contained within the repository.  Artifacts are named AA/bbbbb
   288         -    where AA is the first 2 characters of the artifact ID and bbbbb is the
   289         -    remaining 38 characters.
   290         -
   291         -<hr><a href="#tof">&#710;</a>
   292         -    <a name="rm">Usage: </a><a href="cmd_rm.wiki">fossil rm</a> FILE...    or: fossil del FILE...
   293         -    Remove one or more files from the tree.
   294         -
   295         -<hr><a href="#tof">&#710;</a>
   296         -    <a name="descendants">Usage: </a><a href="cmd_descendants.wiki">fossil descendants</a> ?CHECKIN-ID?
   297         -    Find all leaf descendants of the check-in specified or if the argument
   298         -    is omitted, of the check-in currently checked out.
   299         -
   300         -<hr><a href="#tof">&#710;</a>
   301         -    <a name="diff">Usage: </a><a href="cmd_diff.wiki">fossil diff</a>|gdiff ?-i? ?-r REVISION? FILE...
   302         -    Show the difference between the current version of a file (as it
   303         -    exists on disk) and that same file as it was checked out.
   304         -
   305         -    diff will show a textual diff while gdiff will attempt to run a
   306         -    graphical diff command that you have setup. If the choosen command
   307         -    is not yet configured, the internal textual diff command will be
   308         -    used.
   309         -
   310         -    If -i is supplied for either diff or gdiff, the internal textual
   311         -    diff command will be executed.
   312         -
   313         -    Here are a few external diff command settings, for example:
   314         -
   315         -    fossil setting diff-command diff
   316         -
   317         -    fossil setting gdiff-command tkdiff
   318         -    fossil setting gdiff-command eskill22
   319         -    fossil setting gdiff-command tortoisemerge
   320         -    fossil setting gdiff-command meld
   321         -    fossil setting gdiff-command xxdiff
   322         -    fossil setting gdiff-command kdiff3
   323         -
   324         -<hr><a href="#tof">&#710;</a>
   325         -    <a name="extra">Usage: </a><a href="cmd_extra.wiki">fossil extra</a>
   326         -    Print a list of all files in the source tree that are not part of
   327         -    the current checkout.  See also the "clean" command.
   328         -
   329         -<hr><a href="#tof">&#710;</a>
   330         -    <a name="help">Usage: </a><a href="cmd_help.wiki">fossil help</a> COMMAND
   331         -    Display information on how to use COMMAND
   332         -
   333         -<hr><a href="#tof">&#710;</a>
   334         -    <a name="http">Usage: </a><a href="cmd_http.wiki">fossil http</a> REPOSITORY
   335         -    Handle a single HTTP request appearing on stdin.  The resulting webpage
   336         -    is delivered on stdout.  This method is used to launch an HTTP request
   337         -    handler from inetd, for example.  The argument is the name of the    repository.
   338         -
   339         -<hr><a href="#tof">&#710;</a>
   340         -    <a name="info">Usage: </a><a href="cmd_info.wiki">fossil info</a> ?ARTIFACT-ID|FILENAME?
   341         -    With no arguments, provide information about the current tree.
   342         -    If an argument is specified, provide information about the object
   343         -    in the respository of the current tree that the argument refers
   344         -    to.  Or if the argument is the name of a repository, show
   345         -    information about that repository.
   346         -
   347         -<hr><a href="#tof">&#710;</a>
   348         -    <a name="leaves">Usage: </a><a href="cmd_leaves.wiki">fossil leaves</a>
   349         -    Find leaves of all branches.
   350         -
   351         -<hr><a href="#tof">&#710;</a>
   352         -    <a name="ls">Usage: </a><a href="cmd_ls.wiki">fossil ls</a>
   353         -    Show the names of all files in the current checkout
   354         -
   355         -<hr><a href="#tof">&#710;</a>
   356         -    <a name="merge">Usage: </a><a href="cmd_merge.wiki">fossil merge</a> VERSION
   357         -    The argument is a version that should be merged into the current
   358         -    checkout.
   359         -    Only file content is merged.  The result continues to use the
   360         -    file and directory names from the current check-out even if those
   361         -    names might have been changed in the branch being merged in.
   362         -
   363         -<hr><a href="#tof">&#710;</a>
   364         -    <a name="mv">Usage: </a><a href="cmd_mv.wiki">fossil mv|rename</a> OLDNAME NEWNAME       or: fossil mv|rename OLDNAME... DIR
   365         -
   366         -    Move or rename one or more files within the tree
   367         -
   368         -    This command does not rename the files on disk.  All this command does is
   369         -    record the fact that filenames have changed so that appropriate notations
   370         -    can be made at the next commit/checkin.
   371         -
   372         -<hr><a href="#tof">&#710;</a>
   373         -    <a name="new">Usage: </a><a href="cmd_new.wiki">fossil new</a> FILENAME
   374         -
   375         -    Create a repository for a new project in the file named FILENAME.
   376         -    This command is distinct from "clone".  The "clone" command makes
   377         -    a copy of an existing project.  This command starts a new project.
   378         -
   379         -<hr><a href="#tof">&#710;</a>
   380         -    <a name="open">Usage: </a><a href="cmd_open.wiki">fossil open</a> FILENAME
   381         -    Open a connection to the local repository in FILENAME.  A checkout
   382         -    for the repository is created with its root at the working directory.
   383         -    See also the "close" command.
   384         -
   385         -<hr><a href="#tof">&#710;</a>
   386         -    <a name="rstats">Usage: </a><a href="cmd_rstats.wiki">fossil rstats</a>
   387         -
   388         -    Deliver a report of the repository statistics for the
   389         -    current checkout.
   390         -
   391         -<hr><a href="#tof">&#710;</a>
   392         -    <a name="pull">Usage: </a><a href="cmd_pull.wiki">fossil pull</a> ?URL? ?-R|--respository REPOSITORY?
   393         -    Pull changes in a remote repository into the local repository.
   394         -    The repository is identified by the -R or --repository option.
   395         -    If there is no such option then the open repository is used.
   396         -    The URL of the remote server is specified on the command line
   397         -    If no URL is specified then the URL used by the most recent
   398         -    "pull", "push", or "sync" command is used.
   399         -
   400         -    The URL is of the following form:
   401         -
   402         -    http://USER@HOST:PORT/PATH
   403         -
   404         -    The "USER@" and ":PORT" substrings are optional.
   405         -    The "USER" substring specifies the login user.  You will be
   406         -    prompted for the password on the command-line.  The PORT
   407         -    specifies the TCP port of the server.  The default port is
   408         -    80.
   409         -
   410         -<hr><a href="#tof">&#710;</a>
   411         -    <a name="push">Usage: </a><a href="cmd_push.wiki">fossil push</a> ?URL? ?-R|--repository REPOSITORY?
   412         -    Push changes in the local repository over into a remote repository.
   413         -    See the "pull" command for additional information.
   414         -
   415         -<hr><a href="#tof">&#710;</a>
   416         -    <a name="rebuild">Usage: </a><a href="cmd_rebuild.wiki">fossil rebuild</a> REPOSITORY
   417         -    Reconstruct the named repository database from the core
   418         -    records.  Run this command after updating the fossil
   419         -    executable in a way that changes the database schema.
   420         -
   421         -<hr><a href="#tof">&#710;</a>
   422         -    COMMAND: reconstruct
   423         -    <a name="reconstruct">Usage: </a><a href="cmd_reconstruct.wiki">fossil reconstruct</a> REPOSITORY ORIGIN
   424         -    Creates the REPOSITORY and populates it with the artifacts in the
   425         -    indicated ORIGIN directory.
   426         -
   427         -<hr><a href="#tof">&#710;</a>
   428         -    <a name="redo">Usage: </a><a href="cmd_redo.wiki">fossil redo</a> ?FILENAME...?
   429         -    Redo the an update or merge operation that has been undone by the
   430         -    undo command.  If FILENAME is specified then restore the changes
   431         -    associated with the named file(s) but otherwise leave the update
   432         -    or merge undone.
   433         -
   434         -    A single level of undo/redo is supported.  The undo/redo stack
   435         -    is cleared by the commit and checkout commands.
   436         -
   437         -<hr><a href="#tof">&#710;</a>
   438         -    <a name="revert">Usage: </a><a href="cmd_revert.wiki">fossil revert</a> ?--yes? ?-r CHECKIN? FILE
   439         -    Revert to the current repository version of FILE, or to
   440         -    the version associated with check-in CHECKIN if the -r flag
   441         -    appears.  This command will confirm your operation unless the
   442         -    file is missing or the --yes option is used.
   443         -
   444         -<hr><a href="#tof">&#710;</a>
   445         -    <a name="server">Usage: </a><a href="cmd_server.wiki">fossil server</a> ?-P|--port TCPPORT? ?REPOSITORY?    Or: fossil ui ?-P|--port TCPPORT? ?REPOSITORY?
   446         -
   447         -    Open a socket and begin listening and responding to HTTP requests on
   448         -    TCP port 8080, or on any other TCP port defined by the -P or
   449         -    --port option.  The optional argument is the name of the repository.
   450         -    The repository argument may be omitted if the working directory is
   451         -    within an open checkout.
   452         -
   453         -    The "ui" command automatically starts a web browser after initializing
   454         -    the web server.
   455         -
   456         -<hr><a href="#tof">&#710;</a>
   457         -    COMMAND: settings
   458         -    COMMAND: unset
   459         -    <a name="settings">Usage: </a><a href="cmd_setting.wiki">fossil settings</a> ?PROPERTY? ?VALUE? ?-global?
   460         -    fossil unset PROPERTY ?-global?
   461         -
   462         -    The "settings" command with no arguments lists all properties and their
   463         -    values.  With just a property name it shows the value of that property.
   464         -    With a value argument it changes the property for the current repository.
   465         -
   466         -    The "unset" command clears a property setting.
   467         -
   468         -       autosync         If enabled, automatically pull prior to
   469         -		        commit or update and automatically push
   470         -		        after commit or tag or branch creation.
   471         -
   472         -       diff-command     External command to run when performing a diff.
   473         -		        If undefined, the internal text diff will be used.
   474         -
   475         -       editor           Text editor command used for check-in comments.
   476         -
   477         -       http-port        The TCP/IP port number to use by the "server"
   478         -		        and "ui" commands.  Default: 8080
   479         -
   480         -       gdiff-command    External command to run when performing a graphical
   481         -		        diff. If undefined, text diff will be used.
   482         -
   483         -       localauth        If enabled, require that HTTP connections from
   484         -		        127.0.0.1 be authenticated by password.  If
   485         -		        false, all HTTP requests from localhost have
   486         -		        unrestricted access to the repository.
   487         -
   488         -       clearsign        When enabled (the default), fossil will attempt to
   489         -		        sign all commits with gpg.  When disabled, commits will
   490         -		        be unsigned.
   491         -
   492         -       pgp-command      Command used to clear-sign manifests at check-in.
   493         -		        The default is "gpg --clearsign -o ".
   494         -
   495         -       mtime-changes    Use file modification times (mtimes) to detect when
   496         -		        files have been modified.
   497         -
   498         -       proxy            URL of the HTTP proxy.  If undefined or "on" then
   499         -		        the "http_proxy" environment variable is consulted.
   500         -		        If the http_proxy environment variable is undefined
   501         -		        then a direct HTTP connection is used.
   502         -
   503         -       web-browser      A shell command used to launch your preferred
   504         -		        web browser when given a URL as an argument.
   505         -		        Defaults to "start" on windows, "open" on Mac,
   506         -		        and "firefox" on Unix.
   507         -
   508         -<hr><a href="#tof">&#710;</a>
   509         -    <a name="status">Usage: </a><a href="cmd_status.wiki">fossil status</a>
   510         -    Report on the status of the current checkout.
   511         -
   512         -<hr><a href="#tof">&#710;</a>
   513         -    <a name="sync">Usage: </a><a href="cmd_sync.wiki">fossil sync</a> ?URL? ?-R|--repository REPOSITORY?
   514         -    Synchronize the local repository with a remote repository.  This is
   515         -    the equivalent of running both "push" and "pull" at the same time.
   516         -    See the "pull" command for additional information.
   517         -
   518         -<hr><a href="#tof">&#710;</a>
   519         -    <a name="tag">Usage: </a><a href="cmd_tag.wiki">fossil tag</a> SUBCOMMAND ...
   520         -    Run various subcommands to control tags and properties
   521         -
   522         -    fossil tag add ?--raw? TAGNAME CHECK-IN ?VALUE?
   523         -
   524         -    Add a new tag or property to CHECK-IN. The tag will
   525         -    be usable instead of a CHECK-IN in commands such as
   526         -    update and merge.
   527         -
   528         -    fossil tag branch ?--raw? ?--nofork? TAGNAME CHECK-IN ?VALUE?
   529         -
   530         -    A fork will be created so that the new checkin
   531         -    is a sibling of CHECK-IN and identical to it except
   532         -    for a generated comment. Then the new tag will
   533         -    be added to the new checkin and propagated to
   534         -    all direct children.  Additionally all symbolic
   535         -    tags of that checkin inherited from CHECK-IN will
   536         -    be cancelled.
   537         -
   538         -    However, if the option --nofork is given, no
   539         -    fork will be created and the tag/property will be
   540         -    added to CHECK-IN directly. No tags will be canceled.
   541         -
   542         -    fossil tag cancel ?--raw? TAGNAME CHECK-IN
   543         -
   544         -    Remove the tag TAGNAME from CHECK-IN, and also remove
   545         -    the propagation of the tag to any descendants.
   546         -
   547         -    fossil tag find ?--raw? TAGNAME
   548         -
   549         -    List all check-ins that use TAGNAME
   550         -
   551         -    fossil tag list ?--raw? ?CHECK-IN?
   552         -
   553         -    List all tags, or if CHECK-IN is supplied, list
   554         -    all tags and their values for CHECK-IN.
   555         -
   556         -    The option --raw allows the manipulation of all types of
   557         -    tags used for various internal purposes in fossil. You
   558         -    should not use this option to make changes unless you are
   559         -    sure what you are doing.
   560         -
   561         -    If you need to use a tagname that might be confused with
   562         -    a hexadecimal check-in or artifact ID, you can explicitly
   563         -    disambiguate it by prefixing it with "tag:". For instance:
   564         -
   565         -    fossil update decaf
   566         -
   567         -    will be taken as an artifact or check-in ID and fossil will
   568         -    probably complain that no such revision was found. However
   569         -
   570         -    fossil update tag:decaf
   571         -
   572         -    will assume that "decaf" is a tag/branch name.
   573         -
   574         -<hr><a href="#tof">&#710;</a>
   575         -    <a name="timeline">Usage: </a><a href="cmd_timeline.wiki">fossil timeline</a> ?WHEN? ?CHECK-IN|DATETIME? ?-n|--count N?
   576         -    Print a summary of activity going backwards in date and time
   577         -    specified or from the current date and time if no arguments
   578         -    are given.  Show as many as N (default 20) check-ins.  The
   579         -    WHEN argument can be any unique abbreviation of one of these
   580         -    keywords:
   581         -
   582         -    before
   583         -    after
   584         -    descendants | children
   585         -    ancestors | parents
   586         -
   587         -    The CHECK-IN can be any unique prefix of 4 characters or more.
   588         -    The DATETIME should be in the ISO8601 format.  For
   589         -    examples: "2007-08-18 07:21:21".  You can also say "current"
   590         -    for the current version or "now" for the current time.
   591         -
   592         -<hr><a href="#tof">&#710;</a>
   593         -    <a name="undo">Usage: </a><a href="cmd_undo.wiki">fossil undo</a> ?FILENAME...?
   594         -    Undo the most recent update or merge operation.  If FILENAME is
   595         -    specified then restore the content of the named file(s) but otherwise
   596         -    leave the update or merge in effect.
   597         -
   598         -    A single level of undo/redo is supported.  The undo/redo stack
   599         -    is cleared by the commit and checkout commands.
   600         -
   601         -<hr><a href="#tof">&#710;</a>
   602         -    <a name="update">Usage: </a><a href="cmd_update.wiki">fossil update</a> ?VERSION? ?--latest?
   603         -    The optional argument is a version that should become the current
   604         -    version.  If the argument is omitted, then use the leaf of the
   605         -    tree that begins with the current version, if there is only a    single leaf.  If there are a multiple leaves, the latest is used
   606         -    if the --latest flag is present.
   607         -
   608         -    This command is different from the "checkout" in that edits are
   609         -    not overwritten.  Edits are merged into the new version.
   610         -
   611         -<hr><a href="#tof">&#710;</a>
   612         -    <a name="user">Usage: </a><a href="cmd_user.wiki">fossil user</a> SUBCOMMAND ...  ?-R|--repository FILE?
   613         -    Run various subcommands on users of the open repository or of
   614         -    the repository identified by the -R or --repository option.
   615         -
   616         -    fossil user capabilities USERNAME ?STRING?
   617         -
   618         -    Query or set the capabilities for user USERNAME
   619         -
   620         -    fossil user default ?USERNAME?
   621         -
   622         -    Query or set the default user.  The default user is the
   623         -    user for command-line interaction.
   624         -
   625         -    fossil user list
   626         -
   627         -    List all users known to the repository
   628         -
   629         -    fossil user new ?USERNAME?
   630         -
   631         -    Create a new user in the repository.  Users can never be
   632         -    deleted.  They can be denied all access but they must continue
   633         -    to exist in the database.
   634         -
   635         -    fossil user password USERNAME
   636         -
   637         -    Change the web access password for a user.
   638         -
   639         -<hr><a href="#tof">&#710;</a>
   640         -    <a name="version">Usage: </a><a href="cmd_version.wiki">fossil version</a>
   641         -    Print the source code version number for the fossil executable.
   642         -
   643         -<hr><a href="#tof">&#710;</a>
   644         -    <a name="wiki">Usage: </a><a href="cmd_wiki.wiki">fossil wiki</a> (export|create|commit|list) WikiName
   645         -    Run various subcommands to fetch wiki entries.
   646         -
   647         -    fossil wiki export PAGENAME ?FILE?
   648         -
   649         -    Sends the latest version of the PAGENAME wiki
   650         -    entry to the given file or standard output.
   651         -
   652         -    fossil wiki commit PAGENAME ?FILE?
   653         -
   654         -    Commit changes to a wiki page from FILE or from standard.
   655         -
   656         -    fossil wiki create PAGENAME ?FILE?
   657         -
   658         -    Create a new wiki page with initial content taken from
   659         -    FILE or from standard input.
   660         -
   661         -    fossil wiki list
   662         -
   663         -    Lists all wiki entries, one per line, ordered
   664         -    case-insentively by name.
   665         -
   666         -    TODOs:
   667         -
   668         -    fossil wiki export ?-u ARTIFACT? WikiName ?FILE?
   669         -
   670         -    Outputs the selected version of WikiName.
   671         -
   672         -    fossil wiki delete ?-m MESSAGE? WikiName
   673         -
   674         -    The same as deleting a file entry, but i don't know if fossil
   675         -    supports a commit message for Wiki entries.
   676         -
   677         -    fossil wiki ?-u? ?-d? ?-s=[|]? list
   678         -
   679         -    Lists the artifact ID and/or Date of last change along with
   680         -    each entry name, delimited by the -s char.
   681         -
   682         -    fossil wiki diff ?ARTIFACT? ?-f infile[=stdin]? EntryName
   683         -
   684         -    Diffs the local copy of a page with a given version (defaulting
   685         -    to the head version).
   686         -
   687         -  </pre></nowiki>
   688         -
   689         -  <hr><a href="#tof">&#710;</a>
   690         -
   691         -    <h3>Caveats</h3>
   692         -    This is not actually a reference, it's the start of a reference.
   693         -    There are wikilinks to uncreated pages for the commands.  This was
   694         -    created by running the fossil help for each command listed by running
   695         -    fossil help...  Duplicate commands are only listed once (I
   696         -    <i>think</i>).  There are several bits of <b>fossil</b> that are not addressed
   697         -    in the help for commands (special wiki directories, special users, etc.)
   698         -    so they are (currently) not addressed here.  Clarity and brevity may be
   699         -    sacrificed for expediency at the authors indiscretion.  All spelling and
   700         -    grammatical mistakes are somebody elses fault.<code>  void * </code>
   701         -    prohibited where<code> __C_PLUS_PLUS__ </code>. Title and taxes extra.
   702         -    Not valid in Hooptigonia.
          109  +  <h3>Testing fossil</h3>
          110  +  There are several [/help?cmd=test|test commands] to test the
          111  +  internals of fossil. These commands are listed on a special web page
          112  +  [/help?cmd=test|help?cmd=test]. This page is the counter part of
          113  +  <kbd><a href="/help?cmd=test-commands">fossil test-commands</a></kbd>.
          114  +