Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch fts5-trigram Excluding Merge-Ins
This is equivalent to a diff from 3783a24e to 9e52f8c0
2023-04-18
| ||
17:47 | Extend FTS index support to enable selection of different tokenizers, to support searching of Chinese content. ... (check-in: 0e5d27fe user: stephan tags: trunk) | |
17:45 | Add FTS tokenizer selection to the /srchsetup page. ... (Closed-Leaf check-in: 9e52f8c0 user: stephan tags: fts5-trigram) | |
2023-04-17
| ||
21:50 | Merge latest changes from trunk. ... (Closed-Leaf check-in: 88a76afc user: mgagnon tags: merge-conflict-when-no-file-on-pivot) | |
20:13 | Replace another leftover use of the word 'stemmer' and clean up end-of-line whitespace in the change log. ... (check-in: bcff4d81 user: stephan tags: fts5-trigram) | |
17:25 | Initial (and incomplete) work to extend FTS5 search to support the trigram tokenizer, per forum post bc458aea069c29ae5d. TODO is the addition of the trigram option in the UI-level search configuration. ... (check-in: 06c99b83 user: stephan tags: fts5-trigram) | |
2023-04-16
| ||
13:13 | Merge trunk into forumpost-locking branch. ... (check-in: 0af37104 user: stephan tags: forumpost-locking) | |
2023-04-14
| ||
15:31 | Squelch an unitialized var warning from gcc 12.2.1 on Alpine Linux. ... (check-in: 3783a24e user: stephan tags: trunk) | |
2023-04-13
| ||
07:01 | Typo fix in capabilities.c, reported in forum. ... (check-in: 0df0586a user: danield tags: trunk) | |
Changes to src/search.c.
︙ | ︙ | |||
1510 1511 1512 1513 1514 1515 1516 | blob_init(&out, 0, 0); get_stext_by_mimetype(&in, g.argv[3], &out); fossil_print("%s\n",blob_str(&out)); blob_reset(&in); blob_reset(&out); } | > | > > | 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 | blob_init(&out, 0, 0); get_stext_by_mimetype(&in, g.argv[3], &out); fossil_print("%s\n",blob_str(&out)); blob_reset(&in); blob_reset(&out); } /* ** The schema for the full-text index. The %s part must be an empty ** string or a comma followed by additional flags for the FTS virtual ** table. */ static const char zFtsSchema[] = @ -- One entry for each possible search result @ CREATE TABLE IF NOT EXISTS repository.ftsdocs( @ rowid INTEGER PRIMARY KEY, -- Maps to the ftsidx.rowid @ type CHAR(1), -- Type of document @ rid INTEGER, -- BLOB.RID or TAG.TAGID for the document |
︙ | ︙ | |||
1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 | @ USING fts5(content="ftscontent", title, body%s); ; static const char zFtsDrop[] = @ DROP TABLE IF EXISTS repository.ftsidx; @ DROP VIEW IF EXISTS repository.ftscontent; @ DROP TABLE IF EXISTS repository.ftsdocs; ; /* ** Create or drop the tables associated with a full-text index. */ static int searchIdxExists = -1; void search_create_index(void){ | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | > > > > > | 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 | @ USING fts5(content="ftscontent", title, body%s); ; static const char zFtsDrop[] = @ DROP TABLE IF EXISTS repository.ftsidx; @ DROP VIEW IF EXISTS repository.ftscontent; @ DROP TABLE IF EXISTS repository.ftsdocs; ; #if INTERFACE /* ** Values for the search-tokenizer config option. */ #define FTS5TOK_NONE 0 /* no FTS stemmer */ #define FTS5TOK_PORTER 1 /* porter stemmer */ #define FTS5TOK_TRIGRAM 3 /* trigram stemmer */ #endif /* ** Cached FTS5TOK_xyz value for search_tokenizer_type() and ** friends. */ static int iFtsTokenizer = -1; /* ** Returns one of the FTS5TOK_xyz values, depending on the value of ** the search-tokenizer config entry, defaulting to FTS5TOK_NONE. The ** result of the first call is cached for subsequent calls unless ** bRecheck is true. */ int search_tokenizer_type(int bRecheck){ char *z; if( iFtsTokenizer>=0 && bRecheck==0 ){ return iFtsTokenizer; } z = db_get("search-tokenizer",0); if( 0==z ){ iFtsTokenizer = FTS5TOK_NONE; }else if(0==fossil_strcmp(z,"porter")){ iFtsTokenizer = FTS5TOK_PORTER; }else if(0==fossil_strcmp(z,"trigram")){ iFtsTokenizer = FTS5TOK_TRIGRAM; }else{ iFtsTokenizer = is_truth(z) ? FTS5TOK_PORTER : FTS5TOK_NONE; } fossil_free(z); return iFtsTokenizer; } /* ** Returns a string value suitable for use as the search-tokenizer ** setting's value, depending on the value of z. If z is 0 then the ** current search-tokenizer value is used as the basis for formulating ** the result (which may differ from the current value but will have ** the same meaning). Any unknown/unsupported value is interpreted as ** "off". */ const char *search_tokenizer_for_string(const char *z){ char * zTmp = 0; const char *zRc = 0; if( 0==z ){ z = zTmp = db_get("search-tokenizer",0); } if( 0==z ){ zRc = "off"; }else if( 0==fossil_strcmp(z,"porter") ){ zRc = "porter"; }else if( 0==fossil_strcmp(z,"trigram") ){ zRc = "trigram"; }else{ zRc = is_truth(z) ? "porter" : "off"; } fossil_free(zTmp); return zRc; } /* ** Sets the search-tokenizer config setting to the value of ** search_tokenizer_for_string(zName). */ void search_set_tokenizer(const char *zName){ db_set("search-tokenizer", search_tokenizer_for_string( zName ), 0); iFtsTokenizer = -1; } /* ** Create or drop the tables associated with a full-text index. */ static int searchIdxExists = -1; void search_create_index(void){ const int useTokenizer = search_tokenizer_type(0); const char *zExtra; switch(useTokenizer){ case FTS5TOK_PORTER: zExtra = ",tokenize=porter"; break; case FTS5TOK_TRIGRAM: zExtra = ",tokenize=trigram"; break; default: zExtra = ""; break; } search_sql_setup(g.db); db_multi_exec(zFtsSchema/*works-like:"%s"*/, zExtra/*safe-for-%s*/); searchIdxExists = 1; } void search_drop_index(void){ db_multi_exec(zFtsDrop/*works-like:""*/); searchIdxExists = 0; |
︙ | ︙ | |||
1892 1893 1894 1895 1896 1897 1898 | ** index (on|off) Turn the search index on or off ** ** enable cdtwe Enable various kinds of search. c=Check-ins, ** d=Documents, t=Tickets, w=Wiki, e=Tech Notes. ** ** disable cdtwe Disable various kinds of search ** | | > > | | | 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 | ** index (on|off) Turn the search index on or off ** ** enable cdtwe Enable various kinds of search. c=Check-ins, ** d=Documents, t=Tickets, w=Wiki, e=Tech Notes. ** ** disable cdtwe Disable various kinds of search ** ** tokenizer VALUE Select a tokenizer for indexed search. VALUE ** may be one of (porter, on, off, trigram), and ** "on" is equivalent to "porter". Unindexed ** search never uses tokenization or stemming. ** ** The current search settings are displayed after any changes are applied. ** Run this command with no arguments to simply see the settings. */ void fts_config_cmd(void){ static const struct { int iCmd; const char *z; } aCmd[] = { { 1, "reindex" }, { 2, "index" }, { 3, "disable" }, { 4, "enable" }, { 5, "tokenizer"}, }; static const struct { const char *zSetting; const char *zName; const char *zSw; } aSetng[] = { { "search-ci", "check-in search:", "c" }, |
︙ | ︙ | |||
1964 1965 1966 1967 1968 1969 1970 | if( g.argc<4 ) usage(mprintf("%s STRING",zSubCmd)); zCtrl = g.argv[3]; for(j=0; j<count(aSetng); j++){ if( strchr(zCtrl, aSetng[j].zSw[0])!=0 ){ db_set_int(aSetng[j].zSetting/*works-like:"x"*/, iCmd-3, 0); } } | < | > | > > | > > > > > | | | | | 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 | if( g.argc<4 ) usage(mprintf("%s STRING",zSubCmd)); zCtrl = g.argv[3]; for(j=0; j<count(aSetng); j++){ if( strchr(zCtrl, aSetng[j].zSw[0])!=0 ){ db_set_int(aSetng[j].zSetting/*works-like:"x"*/, iCmd-3, 0); } } }else if( iCmd==5 ){ int iOldTokenizer, iNewTokenizer; if( g.argc<4 ) usage("tokenizer porter|on|off|trigram"); iOldTokenizer = search_tokenizer_type(0); db_set("search-tokenizer", search_tokenizer_for_string(g.argv[3]), 0); iNewTokenizer = search_tokenizer_type(1); if( iOldTokenizer!=iNewTokenizer ){ /* Drop or rebuild index if tokenizer changes. */ iAction = 1 + ((iOldTokenizer && iNewTokenizer) ? 1 : (iNewTokenizer ? 1 : 0)); } } /* destroy or rebuild the index, if requested */ if( iAction>=1 ){ search_drop_index(); } if( iAction>=2 ){ search_rebuild_index(); } /* Always show the status before ending */ for(i=0; i<count(aSetng); i++){ fossil_print("%-17s %s\n", aSetng[i].zName, db_get_boolean(aSetng[i].zSetting,0) ? "on" : "off"); } fossil_print("%-17s %s\n", "tokenizer:", search_tokenizer_for_string(0)); if( search_index_exists() ){ fossil_print("%-17s FTS%d\n", "full-text index:", search_index_type(1)); fossil_print("%-17s %d\n", "documents:", db_int(0, "SELECT count(*) FROM ftsdocs")); }else{ fossil_print("%-17s disabled\n", "full-text index:"); } |
︙ | ︙ |
Changes to src/setup.c.
︙ | ︙ | |||
2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 | @ </tbody></table> if( counter>ofst+limit ){ @ <p><a href="admin_log?n=%d(limit)&x=%d(limit+ofst)">[Older]</a></p> } style_finish_page(); } /* ** WEBPAGE: srchsetup ** ** Configure the search engine. Requires Admin privilege. */ void page_srchsetup(){ login_check_credentials(); | > > > > > > > > > > > > > > > | 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 | @ </tbody></table> if( counter>ofst+limit ){ @ <p><a href="admin_log?n=%d(limit)&x=%d(limit+ofst)">[Older]</a></p> } style_finish_page(); } /* ** Renders a selection list of values for the search-tokenizer ** setting, using the form field name "ftstok". */ static void select_fts_tokenizer(void){ const char *const aTokenizer[] = { "off", "None", "porter", "Porter Stemmer", "trigram", "Trigram" }; multiple_choice_attribute("FTS Tokenizer", "search-tokenizer", "ftstok", "off", 3, aTokenizer); } /* ** WEBPAGE: srchsetup ** ** Configure the search engine. Requires Admin privilege. */ void page_srchsetup(){ login_check_credentials(); |
︙ | ︙ | |||
2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 | onoff_attribute("Search Forum", "search-forum", "sf", 0, 0); @ <hr /> @ <p><input type="submit" name="submit" value="Apply Changes" /></p> @ <hr /> if( P("fts0") ){ search_drop_index(); }else if( P("fts1") ){ search_drop_index(); search_create_index(); search_fill_index(); search_update_index(search_restrict(SRCH_ALL)); } if( search_index_exists() ){ @ <p>Currently using an SQLite FTS%d(search_index_type(0)) search index. @ The index helps search run faster, especially on large repositories, @ but takes up space.</p> | > > | | | 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 | onoff_attribute("Search Forum", "search-forum", "sf", 0, 0); @ <hr /> @ <p><input type="submit" name="submit" value="Apply Changes" /></p> @ <hr /> if( P("fts0") ){ search_drop_index(); }else if( P("fts1") ){ const char *zTokenizer = PD("ftstok","off"); search_set_tokenizer(zTokenizer); search_drop_index(); search_create_index(); search_fill_index(); search_update_index(search_restrict(SRCH_ALL)); } if( search_index_exists() ){ @ <p>Currently using an SQLite FTS%d(search_index_type(0)) search index. @ The index helps search run faster, especially on large repositories, @ but takes up space.</p> select_fts_tokenizer(); @ <p><input type="submit" name="fts0" value="Delete The Full-Text Index"> @ <input type="submit" name="fts1" value="Rebuild The Full-Text Index"> style_submenu_element("FTS Index Debugging","%R/test-ftsdocs"); }else{ @ <p>The SQLite search index is disabled. All searching will be @ a full-text scan. This usually works fine, but can be slow for @ larger repositories.</p> select_fts_tokenizer(); @ <p><input type="submit" name="fts1" value="Create A Full-Text Index"> } @ </div></form> style_finish_page(); } /* |
︙ | ︙ |
Changes to www/changes.wiki.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <title>Change Log</title> <h2 id='v2_22'>Changes for version 2.22 (pending)</h2> * The stock OCI container no longer includes BusyBox, thus no longer needs to start as root to chroot that power away. That in turn frees us from needing to build and install the container as root, since it no longer has to create a private <tt>/dev</tt> tree inside the jail for Fossil's use. <h2 id='v2_21'>Changes for version 2.21 (2023-02-25)</h2> * Users can request a password reset. This feature is disabledby default. Use the new [/help?cmd=self-pw-reset|self-pw-reset property] to enable it. New web pages [/help?cmd=/resetpw|/resetpw] and [/help?cmd=/reqpwreset|/reqpwreset] added. * Add the [/help?cmd=repack|fossil repack] command (together with | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <title>Change Log</title> <h2 id='v2_22'>Changes for version 2.22 (pending)</h2> * The stock OCI container no longer includes BusyBox, thus no longer needs to start as root to chroot that power away. That in turn frees us from needing to build and install the container as root, since it no longer has to create a private <tt>/dev</tt> tree inside the jail for Fossil's use. * Add support for the trigram tokenizer for FTS5 search to enable searching in Chinese. <h2 id='v2_21'>Changes for version 2.21 (2023-02-25)</h2> * Users can request a password reset. This feature is disabledby default. Use the new [/help?cmd=self-pw-reset|self-pw-reset property] to enable it. New web pages [/help?cmd=/resetpw|/resetpw] and [/help?cmd=/reqpwreset|/reqpwreset] added. * Add the [/help?cmd=repack|fossil repack] command (together with |
︙ | ︙ | |||
62 63 64 65 66 67 68 | * On file listing pages, sort filenames using the "uintnocase" collating sequence, so that filenames that contains embedded integers sort in numeric order even if they contain a different number of digits. (Example: "fossil_80_..." comes before "fossil_100.png" in the [/dir?ci=92fd091703a28c07&name=skins/blitz|/skins/blitz] directory listing.) * Enhancements to the graph layout algorithm design to improve readability and promote better situational awareness. | | | | 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | * On file listing pages, sort filenames using the "uintnocase" collating sequence, so that filenames that contains embedded integers sort in numeric order even if they contain a different number of digits. (Example: "fossil_80_..." comes before "fossil_100.png" in the [/dir?ci=92fd091703a28c07&name=skins/blitz|/skins/blitz] directory listing.) * Enhancements to the graph layout algorithm design to improve readability and promote better situational awareness. * Performance enhancement for the [./checkin_names.wiki#root|"root:BRANCHNAME" style of tag], accomplished using a Common Table Expression in the underlying SQL. * Sort tag listings (command line and webpage) by taking numbers into consideration so as to cater for tags that follow semantic versioning. * On the wiki listings, omit by default wiki pages that are associated with check-ins and branches. * Add the new "[/help?cmd=describe|fossil describe]" command. * Markdown subsystem extended with [../src/markdown.md#ftnts|footnotes support]. See corresponding [../test/markdown-test3.md|test cases], [/wiki?name=branch/markdown-footnotes#il|known limitations] and [forum:/forumthread/ee1f1597e46ec07a|discussion]. * Add the new special name "start:BRANCH" to refer to the first check-in of the branch. |
︙ | ︙ | |||
121 122 123 124 125 126 127 | <li> Added the "[/help?cmd=chat|fossil chat pull]" command, available to administrators only, for backing up the chat conversation. </ul> * Promote the test-detach command into the [/help?cmd=detach|detach command]. * For "[/help?cmd=pull|fossil pull]" with the --from-parent-project option, if no URL is specified then use the last URL from the most recent prior "fossil pull --from-parent-project". | | | 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | <li> Added the "[/help?cmd=chat|fossil chat pull]" command, available to administrators only, for backing up the chat conversation. </ul> * Promote the test-detach command into the [/help?cmd=detach|detach command]. * For "[/help?cmd=pull|fossil pull]" with the --from-parent-project option, if no URL is specified then use the last URL from the most recent prior "fossil pull --from-parent-project". * Add options --project-name and --project-desc to the "[/help?cmd=init|fossil init]" command. * The [/help?cmd=/ext|/ext page] generates the SERVER_SOFTWARE environment variable for clients. * Fix the REQUEST_URI [/doc/trunk/www/aboutcgi.wiki#cgivar|CGI variable] such that it includes the query string. This is how most other systems understand REQUEST_URI. * Added the --transport-command option to [/help?cmd=sync|fossil sync] |
︙ | ︙ | |||
143 144 145 146 147 148 149 | <li> Better partial-line matching for side-by-side diffs <li> Buttons on web-based diffs to show more context <li> Performance improvements </ul> * The --branchcolor option on [/help?cmd=commit|fossil commit] and [/help?cmd=amend|fossil amend] can now take the value "auto" to force Fossil to use its built-in automatic color choosing algorithm. | | | | 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | <li> Better partial-line matching for side-by-side diffs <li> Buttons on web-based diffs to show more context <li> Performance improvements </ul> * The --branchcolor option on [/help?cmd=commit|fossil commit] and [/help?cmd=amend|fossil amend] can now take the value "auto" to force Fossil to use its built-in automatic color choosing algorithm. * Fossil now [./concepts.wiki#workflow|autosyncs] prior to running [/help?cmd=open|fossil open]. * Add the [/help?cmd=ticket-default-report|ticket-default-report setting], which if set to the title of a ticket report causes that ticket report to be displayed below the search box in the /ticket page. * The "nc" query parameter to the [/help?cmd=/timeline|/timeline] page causes all graph coloring to be omitted. * Improvements and bug fixes to the new "[/help?cmd=ui|fossil ui REMOTE]" feature so that it works better on a wider variety of platforms. * In [/help?cmd=/wikiedit|/wikiedit], show the list of attachments for the current page and list URLs suitable for pasting them into the page. * Add the --no-http-compression option to [/help?cmd=sync|fossil sync] and similar. * Print total payload bytes on a [/help?cmd=sync|fossil sync] when using the --verbose option. * Add the <tt>close</tt>, <tt>reopen</tt>, <tt>hide</tt>, and </tt>unhide</tt> subcommands to [/help?cmd=branch|the branch command]. |
︙ | ︙ | |||
247 248 249 250 251 252 253 | * <b>Patch 2.15.1:</b> Fix a data exfiltration bug in the server. <b>Upgrading to the patch is recommended.</b> * The [./defcsp.md|default CSP] has been relaxed slightly to allow images to be loaded from any URL. All other resources are still locked down by default. * The built-in skins all use the "[/help?cmd=mainmenu|mainmenu]" setting to determine the content of the main menu. | | | | | | | | | 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 | * <b>Patch 2.15.1:</b> Fix a data exfiltration bug in the server. <b>Upgrading to the patch is recommended.</b> * The [./defcsp.md|default CSP] has been relaxed slightly to allow images to be loaded from any URL. All other resources are still locked down by default. * The built-in skins all use the "[/help?cmd=mainmenu|mainmenu]" setting to determine the content of the main menu. The ability to edit the "mainmenu" setting is added on the /Admin/Configuration page. * The hamburger menu is now available on most of the built-in skins. * Any built-in skin named "X" can be used instead of the standard repository skin by adding the URL parameter <tt>skin=X</tt> to the request. The selection is persisted using the display preferences cookie unless the "once" query parameter is also included. The [/skins] page may be used to select a skin. * The [/cookies] page now gives the user an opportunity to delete individual cookies. And the /cookies page is linked from the /sitemap, so that it appears in hamburger menus. * The [/sitemap] extensions are now specified by a single new "[/help?cmd=sitemap-extra|sitemap-extra setting]", rather than a cluster of various "sitemap-*" settings. The older settings are no longer used. <b>This change might require minor server configuration adjustments on servers that use /sitemap extensions.</b> The /Admin/Configuration page provides the ability to edit the new "sitemap-extra" setting. * Added the "--ckout-alias NAME" option to [/help?cmd=ui|fossil ui], [/help?cmd=server|fossil server], and [/help?cmd=http|fossil http]. This option causes Fossil to understand URIs of the form "/doc/NAME/..." as if they were "[/help?cmd=/doc|/doc/ckout/...]", to facilitate testing of [./embeddeddoc.wiki|embedded documentation] changes prior to check-in. * For diff web pages, if the diff type (unified versus side-by-side) is not specified by a query parameter, and if the "[/help?cmd=preferred-diff-type|preferred-diff-type]" setting is omitted or less than 1, then select the diff type based on a guess of whether or not the request is coming from a mobile device. Mobile gets unified and desktop gets side-by-side. * The various pages which show diffs now have toggles to show/hide individual diffs. * Add the "[/help?cmd=preferred-diff-type|preferred-diff-type]" setting to allow an admin to force a default diff type. * The "pikchr-background" settings is now available in "detail.txt" skin files, for better control of Pikchr colors in inverted color schemes. * Add the <tt>--list</tt> option to the [/help?cmd=tarball|tarball], [/help?cmd=zip|zip], and [/help?cmd=sqlar|sqlar] commands. * The javascript used to implement the hamburger menu on the default built-in skin has been made generic so that it is usable by a variety of skins, and promoted to an ordinary built-in javascript file. * New TH1 commands: "[/doc/trunk/www/th1.md#bireqjs|builtin_request_js]", "[/doc/trunk/www/th1.md#capexpr|capexpr]", "foreach", "lappend", and "string match" * The [/help/leaves|leaves command] now shows the branch point of each leaf. * The [/help?cmd=add|fossil add] command refuses to add files whose names are reserved by Windows (ex: "aux") unless the --allow-reserved |
︙ | ︙ | |||
331 332 333 334 335 336 337 | * <b>Patch 2.14.1:</b> Fix a data exfiltration bug in the server. <b>Upgrading to the patch is recommended.</b> * <b>Schema Update Notice #1:</b> This release drops a trigger from the database schema (replacing it with a TEMP trigger that is created as needed). This change happens automatically the first time you add content to a repository using Fossil 2.14 or later. No | | | 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 | * <b>Patch 2.14.1:</b> Fix a data exfiltration bug in the server. <b>Upgrading to the patch is recommended.</b> * <b>Schema Update Notice #1:</b> This release drops a trigger from the database schema (replacing it with a TEMP trigger that is created as needed). This change happens automatically the first time you add content to a repository using Fossil 2.14 or later. No action is needed on your part. However, if you upgrade to version 2.14 and then later downgrade or otherwise use an earlier version of Fossil, the email notification mechanism may fail to send out notifications for some events, due to the missing trigger. If you want to permanently downgrade an installation, then you should run "[/help?cmd=rebuild|fossil rebuild]" after the downgrade to get email notifications working again. If you are not using |
︙ | ︙ | |||
356 357 358 359 360 361 362 | * The "[/help?cmd=clone|fossil clone]" command is enhanced so that if the repository filename is omitted, an appropriate name is derived from the remote URL and the newly cloned repo is opened. This makes the clone command work more like Git, thus making it easier for people transitioning from Git. * Added the --mainbranch option to the [/help?cmd=git|fossil git export] command. | | | 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 | * The "[/help?cmd=clone|fossil clone]" command is enhanced so that if the repository filename is omitted, an appropriate name is derived from the remote URL and the newly cloned repo is opened. This makes the clone command work more like Git, thus making it easier for people transitioning from Git. * Added the --mainbranch option to the [/help?cmd=git|fossil git export] command. * Added the --format option to the "[/help?cmd=timeline|fossil timeline]" command. * Enhance the --numstat option on the "[/help?cmd=diff|fossil diff]" command so that it shows a total number of lines added and deleted and total number of files modified. * Add the "contact" sub-command to [/help?cmd=user|fossil user]. * Added commands "[/help?cmd=all|fossil all git export]" and |
︙ | ︙ | |||
478 479 480 481 482 483 484 | ancestors of CHECKIN going back to ANCESTOR. For example, [/timeline?p=202006271506&bt=version-2.11] shows all ancestors of the checkin that occured on 2020-06-27 15:06 going back to the 2.11 release. * Update the built-in SQLite so that the "[/help?cmd=sql|fossil sql]" command supports new output modes ".mode box" and ".mode json". | | | 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 | ancestors of CHECKIN going back to ANCESTOR. For example, [/timeline?p=202006271506&bt=version-2.11] shows all ancestors of the checkin that occured on 2020-06-27 15:06 going back to the 2.11 release. * Update the built-in SQLite so that the "[/help?cmd=sql|fossil sql]" command supports new output modes ".mode box" and ".mode json". * Add the "<tt>obscure()</tt>" SQL function to the "[/help?cmd=sql|fossil sql]" command. * Added virtual tables "<tt>helptext</tt>" and "<tt>builtin</tt>" to the "[/help?cmd=sql|fossil sql]" command, providing access to the dispatch table including all help text, and the builtin data files, respectively. * [./delta_format.wiki|Delta compression] is now applied to forum edits. * The [/help?cmd=/wikiedit|wiki editor] has been modernized and is |
︙ | ︙ | |||
515 516 517 518 519 520 521 | <ul><li> "[/help?cmd=rebuild|fossil rebuild]" is needed to take full advantage of this fix. Fossil will continue to work without the rebuild, but the new backlinks will be missing.</ul> * The algorithm for finding the [./tech_overview.wiki#configloc|location of the configuration database] is enhanced to be XDG-compliant. * Add a hide/show feature to | | | 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 | <ul><li> "[/help?cmd=rebuild|fossil rebuild]" is needed to take full advantage of this fix. Fossil will continue to work without the rebuild, but the new backlinks will be missing.</ul> * The algorithm for finding the [./tech_overview.wiki#configloc|location of the configuration database] is enhanced to be XDG-compliant. * Add a hide/show feature to [./wikitheory.wiki#assocwiki|associated wiki] display on check-in and branch information pages. * Enhance the "[/help?cmd=info|fossil info]" command so that it works with no arguments even if not within an open check-out. * Many improvements to the forum and especially email notification of forum posts, in response to community feedback after switching SQLite support from a mailing list over to the forum. * Minimum length of a self-registered user ID increased from 3 to 6 |
︙ | ︙ |