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&to=UUID&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 @ <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: <a name="tof">ˆ</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> </td> 71 + <td> </td> 72 + <td> </td> 73 + <td> </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 help <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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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">ˆ</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 +