Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Removed all references to "Fossil 2.1x" from the docs, excepting the changelog and the hashpolicy doc. The bulk of these were for 2.14 or older — *ten* versions back now! — and there is no reason to suppose such old versions are still in use any more. These notes were justified when they informed users about surprising changes and feature additions, but they now do nothing but clutter the docs. If I am wrong about people being surprised by these things, we still have the changelog, the timeline, and the forum. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
ad47a447c81277763293d99487c4ea4c |
| User & Date: | wyoung 2024-03-30 20:48:35.924 |
Context
|
2024-07-21
| ||
| 16:20 | Update config.guess and config.sub to make it possible to compile Fossil for LoongArch ... (check-in: 09c91cd5e9 user: js tags: loongarch) | |
|
2024-04-04
| ||
| 13:17 | Put 'tag' command arguments in canonical order. ... (check-in: 72add40964 user: danield tags: trunk) | |
|
2024-03-30
| ||
| 20:48 | Removed all references to "Fossil 2.1x" from the docs, excepting the changelog and the hashpolicy doc. The bulk of these were for 2.14 or older — *ten* versions back now! — and there is no reason to suppose such old versions are still in use any more. These notes were justified when they informed users about surprising changes and feature additions, but they now do nothing but clutter the docs. If I am wrong about people being surprised by these things, we still have the changelog, the timeline, and the forum. ... (check-in: ad47a447c8 user: wyoung tags: trunk) | |
| 09:19 | Add MANIFEST_VERSION to the panic log for the case where HAVE_BACKTRACE is false. ... (check-in: f3cac52593 user: stephan tags: trunk) | |
Changes
Changes to www/alerts.md.
| ︙ | ︙ | |||
576 577 578 579 580 581 582 | ### Data Design There are two new tables in the repository database, starting with Fossil 2.7. These tables are not created in new repositories by default. The tables only come into existence as needed when email alerts are configured and used. | < < < < < < | 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 |
### Data Design
There are two new tables in the repository database, starting with
Fossil 2.7. These tables are not created in new repositories by
default. The tables only come into existence as needed when email
alerts are configured and used.
* <b>SUBSCRIBER</b> →
The subscriber table records the email address for people who
want to receive email notifications. Each subscriber has a
`subscriberCode` which is a random 32-byte blob that uniquely
identifies the subscriber. There are also fields to indicate
what kinds of notifications the subscriber wishes to receive,
whether or not the email address of the subscriber has been
verified, etc.
* <b>PENDING\_ALERT</b> →
The PENDING\_ALERT table contains records that define events
about which alert emails might need to be sent.
A pending\_alert always refers to an entry in the
EVENT table. The EVENT table is part of the standard schema
and records timeline entries. In other words, there is one
row in the EVENT table for each possible timeline entry. The
PENDING\_ALERT table refers to EVENT table entries for which
we might need to send alert emails.
As pointed out above, ["subscribers" are distinct from "users"](#uvs).
The SUBSCRIBER.SUNAME field is the optional linkage between users and
subscribers.
<a id="stdout"></a>
### The "stdout" Method
|
| ︙ | ︙ |
Changes to www/backup.md.
| ︙ | ︙ | |||
157 158 159 160 161 162 163 | # <a id="sql-solution"></a> Solution 2: SQL-Level Backup The first method doesn’t get you a copy of the remote’s [private branches][pbr], on purpose. It may also miss other info on the remote, such as SQL-level customizations that the sync protocol can’t see. (Some [ticket system customization][tkt] schemes rely on this ability, for example.) You can solve such problems if you have access to the remote server, which | | | | | 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | # <a id="sql-solution"></a> Solution 2: SQL-Level Backup The first method doesn’t get you a copy of the remote’s [private branches][pbr], on purpose. It may also miss other info on the remote, such as SQL-level customizations that the sync protocol can’t see. (Some [ticket system customization][tkt] schemes rely on this ability, for example.) You can solve such problems if you have access to the remote server, which allows you to get a SQL-level backup by delegating handling of locking and transaction isolation to [the `backup` command][bu], allowing the user to safely back up an in-use repository. If you have SSH access to the remote server, something like this will work: ``` shell #!/bin/bash bf=repo-$(date +%Y-%m-%d).fossil |
| ︙ | ︙ |
Changes to www/build.wiki.
| ︙ | ︙ | |||
409 410 411 412 413 414 415 | along with <tt>--fuzztype</tt>, be sure to check your system's process list to ensure that your <tt>--fuzztype</tt> flag is there. <a id='wasm'></a> <h2>8.0 Building WebAssembly Components</h2> | | | 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 | along with <tt>--fuzztype</tt>, be sure to check your system's process list to ensure that your <tt>--fuzztype</tt> flag is there. <a id='wasm'></a> <h2>8.0 Building WebAssembly Components</h2> Fossil uses one component built as [https://developer.mozilla.org/en-US/docs/WebAssembly | WebAssembly] a.k.a. WASM. Because compiling WASM code requires non-trivial client-side tooling, the repository includes compiled copies of these pieces. Most Fossil hackers should never need to concern themselves with the WASM parts, but this section describes how to for those who want or need to do so. |
| ︙ | ︙ |
Changes to www/caps/ref.html.
| ︙ | ︙ | |||
79 80 81 82 83 84 85 |
<tr id="d">
<th>d</th>
<th>n/a</th>
<td>
Legacy capability letter from Fossil's forebear <a
href="http://cvstrac.org/">CVSTrac</a>, which has no useful
| | < < | | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
<tr id="d">
<th>d</th>
<th>n/a</th>
<td>
Legacy capability letter from Fossil's forebear <a
href="http://cvstrac.org/">CVSTrac</a>, which has no useful
meaning in Fossil due to the nature of its durable Merkle tree design.
We recommend that you remove it in case we
ever reuse this letter for another purpose. See <a
href="https://fossil-scm.org/forum/forumpost/43c78f4bef">this
post</a> for details.
</td>
</tr>
<tr id="e">
|
| ︙ | ︙ |
Changes to www/chat.md.
1 2 3 4 | # Fossil Chat ## Introduction | < | | 1 2 3 4 5 6 7 8 9 10 11 12 |
# Fossil Chat
## Introduction
Fossil’s developer chatroom feature provides an
ephemeral discussion venue for insiders. Design goals include:
* **Simple but functional** →
Fossil chat is designed to provide a convenient real-time
communication mechanism for geographically dispersed developers.
Fossil chat is *not* intended as a replacement or competitor for
IRC, Slack, Discord, Telegram, Google Hangouts, etc.
|
| ︙ | ︙ | |||
60 61 62 63 64 65 66 | For users with appropriate permissions, simply browse to the [/chat](/help?cmd=/chat) to start up a chat session. The default skin includes a "Chat" entry on the menu bar on wide screens for people with chat privilege. There is also a "Chat" option on the [Sitemap page](/sitemap), which means that chat will appear as an option under the hamburger menu for many [skins](./customskin.md). | | | | 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | For users with appropriate permissions, simply browse to the [/chat](/help?cmd=/chat) to start up a chat session. The default skin includes a "Chat" entry on the menu bar on wide screens for people with chat privilege. There is also a "Chat" option on the [Sitemap page](/sitemap), which means that chat will appear as an option under the hamburger menu for many [skins](./customskin.md). Chat messages are subject to [Fossil's full range of Markdown processing](/md_rules). Because chat messages are stored as-is when they arrive from a client, this change applies retroactively to messages stored by previous fossil versions. Files may be sent via chat using the file selection element at the bottom of the page. If the desktop environment system supports it, files may be dragged and dropped onto that element. Files are not automatically sent - selection of a file can be cancelled using the |
| ︙ | ︙ | |||
108 109 110 111 112 113 114 | will be included in that list. To switch sounds, tap the "settings" button. ### <a id='connection'></a> Who's Online? Because the chat app has to be able to work over transient CGI-based connections, as opposed to a stable socket connection to the server, | | | | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | will be included in that list. To switch sounds, tap the "settings" button. ### <a id='connection'></a> Who's Online? Because the chat app has to be able to work over transient CGI-based connections, as opposed to a stable socket connection to the server, real-time tracking of "who's online" is not feasible. Chat offers an optional feature, toggleable in the settings, which can list users who have posted messages in the client's current list of loaded messages. This is not the same thing as tracking who's online, but it gives an overview of which users have been active most recently, noting that "lurkers" (people who post no messages) will not show up in that list, nor does the chat infrastructure have a way to track and present those. That list can be used to filter messages on a specific user by tapping on that user's name, tapping a second time to |
| ︙ | ︙ |
Changes to www/ckout-workflows.md.
| ︙ | ︙ | |||
86 87 88 89 90 91 92 | Basically, you replace the `cd` commands in the multiple checkouts workflow above with `fossil up` commands. #### <a id="open"></a> Opening a Repository by URI | | < | | 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
Basically, you replace the `cd` commands in the multiple checkouts
workflow above with `fossil up` commands.
#### <a id="open"></a> Opening a Repository by URI
You can instead open the repo’s URI directly:
mkdir work-dir
cd work-dir
fossil open https://example.com/repo
Now you have “trunk” open in `work-dir`, with the repo file stored as
`repo.fossil` in that same directory.
Users of Git may be surprised that it doesn’t create a directory for you
and that you `cd` into it *before* the clone-and-open step, not after.
This is because we’re overloading the “open” command, which already had
the behavior of opening into the current working directory. Changing it
to behave like `git clone` would therefore make the behavior surprising
to Fossil users. (See [our discussions][caod] if you want the full
details.)
#### <a id="clone"></a> Git-Like Clone-and-Open
Fossil also supports a more Git-like alternative:
fossil clone https://fossil-scm.org/fossil
cd fossil
This results in a `fossil.fossil` repo DB file and a `fossil/` working
directory.
|
| ︙ | ︙ |
Changes to www/customskin.md.
| ︙ | ︙ | |||
143 144 145 146 147 148 149 |
to close out the generated HTML:
</body>
</html>
## <a id="mainmenu"></a>Changing the Main Menu Contents
| | | | 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
to close out the generated HTML:
</body>
</html>
## <a id="mainmenu"></a>Changing the Main Menu Contents
The actual text content of the skin’s main menu is not
part of the skin proper if you’re using one of the stock skins.
If you look at the Header section of the skin, you’ll find a
`<div class="mainmenu">` element whose contents are set by a short
[TH1](./th1.md) script from the contents of the **Main Menu** section of
the Setup → Configuration screen.
This feature allows the main menu contents to stay the same across
different skins, so you no longer have to reapply menu customizations
|
| ︙ | ︙ | |||
218 219 220 221 222 223 224 | The three "timeline-" settings in details.txt control the appearance of certain aspects of the timeline graph. The number on the right is a boolean - "1" to activate the feature and "0" to disable it. The "white-foreground:" setting should be set to "1" if the page color has light-color text on a darker background, and "0" if the page has dark text on a light-colored background. | | | 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 | The three "timeline-" settings in details.txt control the appearance of certain aspects of the timeline graph. The number on the right is a boolean - "1" to activate the feature and "0" to disable it. The "white-foreground:" setting should be set to "1" if the page color has light-color text on a darker background, and "0" if the page has dark text on a light-colored background. If the "pikchr-foreground" setting is defined and is not an empty string then it specifies a foreground color to use for [pikchr diagrams](./pikchr.md). The default pikchr foreground color is black, or white if the "white-foreground" boolean is set. The "pikchr-background" settings does the same for the pikchr diagram background color. If the "pikchr-fontscale" and "pikchr-scale" values are not empty strings, then they should be floating point values (close |
| ︙ | ︙ | |||
265 266 267 268 269 270 271 | typically cause the javascript to be loaded by including the following TH1 code in the "header.txt" file: <pre> <th1>builtin_request_js hbmenu.js</th1> </pre> | | | | | | < < | | | 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 | typically cause the javascript to be loaded by including the following TH1 code in the "header.txt" file: <pre> <th1>builtin_request_js hbmenu.js</th1> </pre> The difference between `styleScript` and `builtin_request_js` is that the `styleScript` command interprets the file using TH1 and injects the content directly into the output stream, whereas the `builtin_request_js` command inserts the Javascript verbatim and does so at some unspecified future time down inside the Fossil-generated footer. You can use either approach in custom skins that you create. Note that the "js.txt" file is *not* automatically inserted into the generate HTML for a page. You, the skin designer, must cause the javascript to be inserted by issuing appropriate TH1 commands in the "header.txt" or "footer.txt" files.</dd> </dl> |
| ︙ | ︙ |
Changes to www/defcsp.md.
| ︙ | ︙ | |||
75 76 77 78 79 80 81 | [b64]: https://en.wikipedia.org/wiki/Base64 [svr]: ./server/ ### <a id="img"></a> img-src * data: | > | | | | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | [b64]: https://en.wikipedia.org/wiki/Base64 [svr]: ./server/ ### <a id="img"></a> img-src * data: It was not always thus, but after careful consideration, we’ve chosen to leave the source of inline images unrestricted by default in Fossil. This allows you to pull them in from remote systems, to pull them from within the Fossil repository itself, or to use `data:` URIs. If you are certain all images come from only within the repository, you can close off certain risks — tracking pixels, broken image format decoders, system dialog box spoofing, etc. — by changing this to “`img-src 'self'`” possibly followed by “`data:`” if you will also use `data:` URIs. |
| ︙ | ︙ |
Changes to www/fileedit-page.md.
| ︙ | ︙ | |||
260 261 262 263 264 265 266 |
lost on a page reload. How that is done is completely dependent on the
3rd-party editor widget, but it generically looks something like:
```
myCustomWidget.on('eventName', ()=>fossil.page.notifyOfChange());
```
| < < < | 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
lost on a page reload. How that is done is completely dependent on the
3rd-party editor widget, but it generically looks something like:
```
myCustomWidget.on('eventName', ()=>fossil.page.notifyOfChange());
```
Lastly, if the 3rd-party editor does *not* hide or remove the native
editor widget, and does not inject itself into the DOM on the caller's
behalf, we can replace the native widget with the 3rd-party one with:
```javascript
fossil.page.replaceEditorWidget(yourNewWidgetElement);
```
|
| ︙ | ︙ |
Changes to www/fossil-v-git.wiki.
| ︙ | ︙ | |||
843 844 845 846 847 848 849 | Fossil delivered a new release allowing a clean migration to [https://en.wikipedia.org/wiki/SHA-3|256-bit SHA-3] with [./hashpolicy.wiki|full backwards compatibility] to old SHA-1 based repositories. In October 2019, after the last of the major binary package repos offering Fossil upgraded to Fossil 2.<i>x</i>, | | | | 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 | Fossil delivered a new release allowing a clean migration to [https://en.wikipedia.org/wiki/SHA-3|256-bit SHA-3] with [./hashpolicy.wiki|full backwards compatibility] to old SHA-1 based repositories. In October 2019, after the last of the major binary package repos offering Fossil upgraded to Fossil 2.<i>x</i>, we switched the default hash mode so that the conversion to SHA-3 is fully automatic. This not only solves the SHAttered problem, it should prevent a reoccurrence of similar problems for the foreseeable future. Meanwhile, the Git community took until August 2018 to publish [https://git-scm.com/docs/hash-function-transition/|their first plan] for solving the same problem by moving to SHA-256, a variant of the |
| ︙ | ︙ | |||
949 950 951 952 953 954 955 |
<li><p>Both Fossil and Git support
[https://en.wikipedia.org/wiki/Patch_(Unix)|<tt>patch(1)</tt>
files] — unified diff formatted output — for accepting drive-by contributions, but it's a
lossy contribution path for both systems. Unlike Git PRs and Fossil
bundles, patch files collapse multiple checkins together, they don't
include check-in comments, and they cannot encode changes made above
the individual file content layer: you lose branching decisions,
| | | | 949 950 951 952 953 954 955 956 957 958 959 960 961 962 |
<li><p>Both Fossil and Git support
[https://en.wikipedia.org/wiki/Patch_(Unix)|<tt>patch(1)</tt>
files] — unified diff formatted output — for accepting drive-by contributions, but it's a
lossy contribution path for both systems. Unlike Git PRs and Fossil
bundles, patch files collapse multiple checkins together, they don't
include check-in comments, and they cannot encode changes made above
the individual file content layer: you lose branching decisions,
tag changes, file renames, and more when using patch files. The
[./patchcmd.md | <tt>fossil patch</tt> command]
also solves these problems, but it is because it works like a Fossil
bundle, only for uncommitted changes; it doesn't use Larry Wall's
<tt>patch</tt> tool to apply unified diff output to the receiving
Fossil checkout.</p></li>
</ol></i></small>
|
Changes to www/gitusers.md.
| ︙ | ︙ | |||
779 780 781 782 783 784 785 | is "`trunk`". The "`trunk`" branch in Fossil corresponds to the "`master`" branch in stock Git or to [the “`main`” branch in GitHub][mbgh]. Because the `fossil git export` command has to work with both stock Git and with GitHub, Fossil uses Git’s traditional default rather than GitHub’s new default: your Fossil repo’s “trunk” branch becomes “master” when [mirroring to GitHub][mirgh] unless you give the `--mainbranch` | | | 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 | is "`trunk`". The "`trunk`" branch in Fossil corresponds to the "`master`" branch in stock Git or to [the “`main`” branch in GitHub][mbgh]. Because the `fossil git export` command has to work with both stock Git and with GitHub, Fossil uses Git’s traditional default rather than GitHub’s new default: your Fossil repo’s “trunk” branch becomes “master” when [mirroring to GitHub][mirgh] unless you give the `--mainbranch` option. We do not know what happens on subsequent exports if you later rename this branch on the GitHub side. [mbgh]: https://github.com/github/renaming [mirgh]: ./mirrortogithub.md |
| ︙ | ︙ | |||
851 852 853 854 855 856 857 |
`patch(1)` files or piping diff output to another command that
doesn’t understand ANSI escape sequences. There’s an example of this
[below](#dstat).
* Use the Fossil web UI to diff existing commits.
* To diff the current working directory contents against some parent
| | | 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 |
`patch(1)` files or piping diff output to another command that
doesn’t understand ANSI escape sequences. There’s an example of this
[below](#dstat).
* Use the Fossil web UI to diff existing commits.
* To diff the current working directory contents against some parent
instead, Fossil’s diff command can produce
colorized HTML output and open it in the OS’s default web browser.
For example, `fossil diff -by` will show side-by-side diffs.
* Use the older `fossil diff --tk` option to do much the same using
Tcl/Tk instead of a browser.
Viewed this way, Fossil doesn’t lack colorized diffs, it simply has
|
| ︙ | ︙ | |||
1256 1257 1258 1259 1260 1261 1262 |
We start the same way, cloning the work repo down to the laptop:
fossil clone https://dev-server.example.com/repo
cd repo
fossil remote add work https://dev-server.example.com/repo
| | | 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 |
We start the same way, cloning the work repo down to the laptop:
fossil clone https://dev-server.example.com/repo
cd repo
fossil remote add work https://dev-server.example.com/repo
We’ve chosen the new “`fossil clone URI`” syntax rather than separate
`clone` and `open` commands to make the parallel with Git clearer. [See
above](#mwd) for more on that topic.
Our [`remote` command][rem] is longer than the Git equivalent because
Fossil currently has no short command
to rename an existing remote. Worse, unlike with Git, we can’t just keep
using the default remote name because Fossil uses that slot in its
|
| ︙ | ︙ |
Changes to www/glossary.md.
| ︙ | ︙ | |||
430 431 432 433 434 435 436 |
organizational tool well-suited to complicated documentation.
* Your repository’s Home page is a good candidate for the wiki, as is
documentation meant for use only with the current version of the
repository’s contents.
* If you are at all uncertain whether to use the wiki or the embedded
| | | | | 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 |
organizational tool well-suited to complicated documentation.
* Your repository’s Home page is a good candidate for the wiki, as is
documentation meant for use only with the current version of the
repository’s contents.
* If you are at all uncertain whether to use the wiki or the embedded
documentation feature, prefer the latter, since it is inherently
more powerful, and when you use the [`/fileedit` feature][fef], the
workflow is scarcely different from using the wiki.
(This very file is embedded documentation: clone
[Fossil’s self-hosting repository][fshr] and you will find it as
`www/glossary.md`.)
[edoc]: ./embeddeddoc.wiki
[fef]: ./fileedit-page.md
|
| ︙ | ︙ |
Changes to www/javascript.md.
| ︙ | ︙ | |||
319 320 321 322 323 324 325 | diff them” feature. [wt]: https://fossil-scm.org/home/timeline ### <a id="wedit"></a>The New Wiki Editor | | | 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 | diff them” feature. [wt]: https://fossil-scm.org/home/timeline ### <a id="wedit"></a>The New Wiki Editor The [new wiki editor][fwt] has many new features, a few of which are impossible to get without use of JavaScript. First, it allows in-browser previews without losing client-side editor state, such as where your cursor is. With the old editor, you had to re-locate the place you were last editing on each preview, which would reduce the incentive to use the preview function. In the new wiki editor, you just click the Preview tab to see how Fossil interprets your |
| ︙ | ︙ | |||
353 354 355 356 357 358 359 | this new editor was created, replacing it. If someone rescues that feature, merging it in with the new editor, it will doubtless require JavaScript in order to react to editor button clicks like the “**B**” button, meaning “make \[selected\] text boldface.” There is no standard WYSIWYG editor component in browsers, doubtless because it’s relatively straightforward to create one using JavaScript. | | | | | 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 | this new editor was created, replacing it. If someone rescues that feature, merging it in with the new editor, it will doubtless require JavaScript in order to react to editor button clicks like the “**B**” button, meaning “make \[selected\] text boldface.” There is no standard WYSIWYG editor component in browsers, doubtless because it’s relatively straightforward to create one using JavaScript. _Graceful Fallback:_ Fossil’s lack of a script-free wiki editor mode is not from lack of desire, but because the person who wrote the new wiki editor didn’t want to maintain three different editors. (New Ajaxy editor, old script-free HTML form based editor, and the old WYSIWYG JavaScript-based editor.) If someone wants to implement a `<noscript>` alternative to the new wiki editor, we will likely accept that [contribution][cg] as long as it doesn’t interfere with the new editor. (The same goes for adding a WYSIWYG mode to the new Ajaxy wiki editor.) |
| ︙ | ︙ | |||
394 395 396 397 398 399 400 | [fwc]: /help?cmd=wiki [fwt]: ./wikitheory.wiki ### <a id="fedit"></a>The File Editor | | | 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 | [fwc]: /help?cmd=wiki [fwt]: ./wikitheory.wiki ### <a id="fedit"></a>The File Editor Fossil’s [optional file editor feature][fedit] works much like [the new wiki editor](#wedit), only on files committed to the repository. The original designed purpose for this feature is to allow [embedded documentation][edoc] to be interactively edited in the same way that wiki articles can be. (Indeed, the associated `fileedit-glob` feature allows you to restrict the editor to working *only* on files that can be |
| ︙ | ︙ | |||
435 436 437 438 439 440 441 | per [the `/file` docs](/help?cmd=/file). _Potential Better Workaround:_ Someone sufficiently interested could [provide a patch][cg] to add a `<noscript>` wrapped HTML button that would reload the page with this parameter included/excluded to implement the toggle via a server round-trip. | | | | | 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 | per [the `/file` docs](/help?cmd=/file). _Potential Better Workaround:_ Someone sufficiently interested could [provide a patch][cg] to add a `<noscript>` wrapped HTML button that would reload the page with this parameter included/excluded to implement the toggle via a server round-trip. A related feature is Fossil’s JavaScript-based interactive method for selecting a range of lines by clicking the line numbers when they’re visible. JavaScript lets us copy the resulting URL to the clipboard to share your selection with others. _Workaround:_ These interactive features would be difficult and expensive (in terms of network I/O) to implement without JavaScript. A far simpler alternative is to manually edit the URL, per above. [mainc]: https://fossil-scm.org/home/artifact?ln&name=87d67e745 |
| ︙ | ︙ | |||
463 464 465 466 467 468 469 | in one box, you probably want to examine the same point on that line in the other box. _Graceful Fallback:_ Manually scroll both boxes to sync their views. ### <a id="diffcontext"></a>Diff Context Loading | | | 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 | in one box, you probably want to examine the same point on that line in the other box. _Graceful Fallback:_ Manually scroll both boxes to sync their views. ### <a id="diffcontext"></a>Diff Context Loading Fossil’s diff views can dynamically load more lines of context around changed blocks. The UI controls for this feature are injected using JavaScript when the page initializes and make use of XHR requests to fetch data from the fossil instance. _Graceful Fallback:_ The UI controls for this feature do not appear when JS is unavailable, leaving the user with the "legacy" static diff |
| ︙ | ︙ | |||
564 565 566 567 568 569 570 | patch to do this][cg] may well be accepted. Since this is not a *necessary* Fossil feature, an interested user is unlikely to get the core developers to do this work for them. ### <a id="chat"></a>Chat | | | | 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 |
patch to do this][cg] may well be accepted. Since this is not a
*necessary* Fossil feature, an interested user is unlikely to get the
core developers to do this work for them.
### <a id="chat"></a>Chat
The [chat feature](./chat.md) is deeply dependent
on JavaScript. There is no obvious way to do this sort of thing without
active client-side code of some sort.
_Potential Workaround:_ It would not be especially difficult for someone
sufficiently motivated to build a Fossil chat gateway, connecting to
IRC, Jabber, etc. The messages are stored in the repository’s `chat`
table with monotonically increasing IDs, so a poller that did something
like
SELECT xfrom, xmsg FROM chat WHERE msgid > 1234;
…would pull the messages submitted since the last poll. Making the
gateway bidirectional should be possible as well, as long as it properly
uses SQLite transactions.
### <a id="brlist"></a>List of branches
The [`/brlist`](/brlist) page uses JavaScript to enable
selection of several branches for further study via `/timeline`.
Client-side script interactively responds to checkboxes' events
and constructs a special hyperlink in the submenu.
Clicking this hyperlink loads a `/timeline` page that shows
only these selected branches (and the related check-ins).
_Potential Workaround:_ A user can manually construct an appropriate
|
| ︙ | ︙ |
Changes to www/mirrortogithub.md.
| ︙ | ︙ | |||
98 99 100 101 102 103 104 |
subsequent invocations of "`fossil git export`" will know where you
left off the last time and what new content needs to be moved over into
Git. Be careful not to mess with the `.mirror_state` directory or
any of its contents. Do not put those files under Git management. Do
not edit or delete them.
* The name of the "trunk" branch is automatically translated into "master"
| | < | 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
subsequent invocations of "`fossil git export`" will know where you
left off the last time and what new content needs to be moved over into
Git. Be careful not to mess with the `.mirror_state` directory or
any of its contents. Do not put those files under Git management. Do
not edit or delete them.
* The name of the "trunk" branch is automatically translated into "master"
in the Git mirror unless you give the `--mainbranch` option.
* Only check-ins and simple tags are translated to Git. Git does not
support wiki or tickets or unversioned content or any of the other
features of Fossil that make it so convenient to use, so those other
elements cannot be mirrored in Git.
* In Git, all tags must be unique. If your Fossil repository has the
|
| ︙ | ︙ |
Changes to www/server/debian/nginx.md.
| ︙ | ︙ | |||
295 296 297 298 299 300 301 |
detectors don’t include one that knows how to detect an attack on
Fossil. We have to teach it by putting the following into
`/etc/fail2ban/filter.d/nginx-fossil-login.conf`:
[Definition]
failregex = ^<HOST> - .*POST .*/login HTTP/..." 401
| | < < < | 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 |
detectors don’t include one that knows how to detect an attack on
Fossil. We have to teach it by putting the following into
`/etc/fail2ban/filter.d/nginx-fossil-login.conf`:
[Definition]
failregex = ^<HOST> - .*POST .*/login HTTP/..." 401
That teaches `fail2ban` how to recognize the errors logged by Fossil.
Then in `/etc/fail2ban/jail.local`, add this section:
[nginx-fossil-login]
enabled = true
logpath = /var/log/nginx/*-https-access.log
|
| ︙ | ︙ |
Changes to www/server/windows/service.md.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # Fossil as a Windows Service If you need Fossil to start automatically on Windows, it is suggested to install Fossil as a Windows Service. ## Assumptions 1. You have Administrative access to a Windows 2012r2 or above server. 2. You have PowerShell 5.1 or above installed. ## Place Fossil on Server However you obtained your copy of Fossil, it is recommended that you follow | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # Fossil as a Windows Service If you need Fossil to start automatically on Windows, it is suggested to install Fossil as a Windows Service. ## Assumptions 1. You have Administrative access to a Windows 2012r2 or above server. 2. You have PowerShell 5.1 or above installed. ## Place Fossil on Server However you obtained your copy of Fossil, it is recommended that you follow Windows conventions and place it within `\Program Files\FossilSCM`, the proper location for the official 64-bit binary. This way Fossil is at an expected location and you will have minimal issues with Windows interfering in your ability to run Fossil as a service. You will need Administrative rights to place fossil at the recommended location. If you will only be running Fossil as a service, you do not need to add this location to the path, though you may do so if you wish. ## Installing Fossil as a Service |
| ︙ | ︙ |
Changes to www/server/windows/stunnel.md.
| ︙ | ︙ | |||
9 10 11 12 13 14 15 | ## Assumptions 1. You have Administrative access to a Windows 2012r2 or above server. 2. You have PowerShell 5.1 or above installed. 3. You have acquired a certificate either from a Public CA or an Internal CA. | < < < < < < | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ## Assumptions 1. You have Administrative access to a Windows 2012r2 or above server. 2. You have PowerShell 5.1 or above installed. 3. You have acquired a certificate either from a Public CA or an Internal CA. ## Configure Fossil Service for https Due to the need for the `--https` option for successfully using Fossil with stunnel, we will use [Advanced service installation using PowerShell](./service.md#PowerShell). We will need to change the command to install the Fossil Service to configure it properly for use with stunnel as an https proxy. Run the following: |
| ︙ | ︙ |
Changes to www/ssl.wiki.
| ︙ | ︙ | |||
119 120 121 122 123 124 125 | to accept the certificate the first time you communicate with the server. Verify the certificate fingerprint is correct, then answer "always" if you want Fossil to remember your decision. If you are cloning from or syncing to Fossil servers that use a certificate signed by a well-known CA or one of its delegates, Fossil still has to know which CA roots to trust. When this fails, you get an | | | 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | to accept the certificate the first time you communicate with the server. Verify the certificate fingerprint is correct, then answer "always" if you want Fossil to remember your decision. If you are cloning from or syncing to Fossil servers that use a certificate signed by a well-known CA or one of its delegates, Fossil still has to know which CA roots to trust. When this fails, you get an error message that looks like this: <pre> Unable to verify SSL cert from fossil-scm.org subject: CN = sqlite.org issuer: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 sha256: bf26092dd97df6e4f7bf1926072e7e8d200129e1ffb8ef5276c1e5dd9bc95d52 accept this cert and continue (y/N)? |
| ︙ | ︙ | |||
224 225 226 227 228 229 230 | If you attempt to connect to a server which requests a client certificate, but don't provide one, fossil will show an error message which explains what to do to authenticate with the server. <h2 id="server">Server-Side Configuration</h2> | | < | | 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | If you attempt to connect to a server which requests a client certificate, but don't provide one, fossil will show an error message which explains what to do to authenticate with the server. <h2 id="server">Server-Side Configuration</h2> Before Fossil's built-in HTTP server gained [./ssl-server.md | TLS support], system administrators that wanted to add this had to put it behind a reverse proxy that would do the translation. Since advantages remain for delegating TLS to another layer in the stack, instructions for doing so continue to be included in our documentation, such as: * <a id="stunnel" href="./server/any/stunnel.md">Serving via stunnel</a> * <a id="althttpd" href="./server/any/althttpd.md">Serving via stunnel + althttpd</a> |
| ︙ | ︙ |
Changes to www/th1.md.
| ︙ | ︙ | |||
279 280 281 282 283 284 285 | document. <a id="capexpr"></a>TH1 capexpr Command ----------------------------------------------------- | < < | 279 280 281 282 283 284 285 286 287 288 289 290 291 292 | document. <a id="capexpr"></a>TH1 capexpr Command ----------------------------------------------------- * capexpr CAPABILITY-EXPR The capability expression is a list. Each term of the list is a cluster of [capability letters](./caps/ref.html). The overall expression is true if any one term is true. A single term is true if all letters within that term are true. Or, if the term begins with "!", then the term is true |
| ︙ | ︙ |