Fossil SCM
Closing off the containers project: added the doc to the permuted index, noted the changes in the changelog, and removed all the hedging about WAL mode in the doc, having failed to make WAL fail in this scenario.
Commit
92982dc4e21f36e09fa1884438ad307e7c784b96903fbda7ef3e2fc97535f9ba
Parent
a59af25f60c56da…
4 files changed
+4
+4
-31
+1
+1
+4
| --- www/changes.wiki | ||
| +++ www/changes.wiki | ||
| @@ -7,10 +7,14 @@ | ||
| 7 | 7 | * The /unsubscribe page now requests comformation. [./alerts.md|Email notifications] |
| 8 | 8 | now contain only an "Unsubscribe" link, and not a link to subscription management. |
| 9 | 9 | * More elements of the /info page are now inside of an accordion. |
| 10 | 10 | * Replace the <tt>--dryrun</tt> flag with <tt>--dry-run</tt> in all |
| 11 | 11 | commands which still used the former name, for consistency. |
| 12 | + * Rebuilt the stock Dockerfile to create a "from scratch" Busybox | |
| 13 | + based container image (via Alpine Linux) instead of Fedora | |
| 14 | + * Added a new document describing how to customize, use, and run | |
| 15 | + that container. | |
| 12 | 16 | |
| 13 | 17 | <h2 id='v2_19'>Changes for version 2.19 (2022-07-21)</h2> |
| 14 | 18 | * On file listing pages, sort filenames using the "uintnocase" collating |
| 15 | 19 | sequence, so that filenames that contains embedded integers sort in |
| 16 | 20 | numeric order even if they contain a different number of digits. |
| 17 | 21 |
| --- www/changes.wiki | |
| +++ www/changes.wiki | |
| @@ -7,10 +7,14 @@ | |
| 7 | * The /unsubscribe page now requests comformation. [./alerts.md|Email notifications] |
| 8 | now contain only an "Unsubscribe" link, and not a link to subscription management. |
| 9 | * More elements of the /info page are now inside of an accordion. |
| 10 | * Replace the <tt>--dryrun</tt> flag with <tt>--dry-run</tt> in all |
| 11 | commands which still used the former name, for consistency. |
| 12 | |
| 13 | <h2 id='v2_19'>Changes for version 2.19 (2022-07-21)</h2> |
| 14 | * On file listing pages, sort filenames using the "uintnocase" collating |
| 15 | sequence, so that filenames that contains embedded integers sort in |
| 16 | numeric order even if they contain a different number of digits. |
| 17 |
| --- www/changes.wiki | |
| +++ www/changes.wiki | |
| @@ -7,10 +7,14 @@ | |
| 7 | * The /unsubscribe page now requests comformation. [./alerts.md|Email notifications] |
| 8 | now contain only an "Unsubscribe" link, and not a link to subscription management. |
| 9 | * More elements of the /info page are now inside of an accordion. |
| 10 | * Replace the <tt>--dryrun</tt> flag with <tt>--dry-run</tt> in all |
| 11 | commands which still used the former name, for consistency. |
| 12 | * Rebuilt the stock Dockerfile to create a "from scratch" Busybox |
| 13 | based container image (via Alpine Linux) instead of Fedora |
| 14 | * Added a new document describing how to customize, use, and run |
| 15 | that container. |
| 16 | |
| 17 | <h2 id='v2_19'>Changes for version 2.19 (2022-07-21)</h2> |
| 18 | * On file listing pages, sort filenames using the "uintnocase" collating |
| 19 | sequence, so that filenames that contains embedded integers sort in |
| 20 | numeric order even if they contain a different number of digits. |
| 21 |
+4
-31
| --- www/containers.md | ||
| +++ www/containers.md | ||
| @@ -168,41 +168,14 @@ | ||
| 168 | 168 | the container while there’s an active WAL, the Fossil instance outside |
| 169 | 169 | won’t know about it. It will think it needs to write *its own* |
| 170 | 170 | `-journal` and `-wal` files *outside* the container, creating a high |
| 171 | 171 | risk of [database corruption][dbcorr]. |
| 172 | 172 | |
| 173 | -If we map a whole directory, both sides see the same set of WAL files, | |
| 174 | -so there is at least a *hope* that WAL will work properly across that | |
| 175 | -boundary. The success of the scheme depends on the `mmap()` and shared | |
| 176 | -memory system calls being coordinated properly by the OS kernel the two | |
| 177 | -worlds share. | |
| 178 | - | |
| 179 | -There is [a plan](https://tangentsoft.com/sqlite/dir/walbanger?ci=trunk) | |
| 180 | -for proving to a reasonable level of confidence that using WAL across a | |
| 181 | -container boundary is safe, but this effort is still in the early stages | |
| 182 | -as of this writing. | |
| 183 | - | |
| 184 | -Until that’s settled, my advice to those who want to use WAL mode on | |
| 185 | -containerized servers is to map the whole directory as shown in these | |
| 186 | -examples, but then isolate the two sides with a secondary clone. On the | |
| 187 | -outside, you say something like this: | |
| 188 | - | |
| 189 | -``` | |
| 190 | - $ fossil clone https://[email protected]/myproject ~/museum/myproject.fossil | |
| 191 | -``` | |
| 192 | - | |
| 193 | -That lands you with two side-by-side clones of the repository on the | |
| 194 | -server: | |
| 195 | - | |
| 196 | -``` | |
| 197 | - ~/museum/myproject.fossil ← local-use clone | |
| 198 | - ~/museum/myproject/repo.fossil ← served by container only | |
| 199 | -``` | |
| 200 | - | |
| 201 | -You open the secondary clone for local use, not the one being served by | |
| 202 | -the container. When you commit, Fossil’s autosync feature pushes the | |
| 203 | -change up through the HTTPS link to land safely inside the container. | |
| 173 | +If we map a whole directory, both sides see the same set of WAL files. | |
| 174 | +[Testing](https://tangentsoft.com/sqlite/dir/walbanger?ci=trunk) | |
| 175 | +gives us a reasonable level of confidence that using WAL across a | |
| 176 | +container boundary is safe when used in this manner. | |
| 204 | 177 | |
| 205 | 178 | [dbcorr]: https://www.sqlite.org/howtocorrupt.html#_deleting_a_hot_journal |
| 206 | 179 | [wal]: https://www.sqlite.org/wal.html |
| 207 | 180 | |
| 208 | 181 | |
| 209 | 182 |
| --- www/containers.md | |
| +++ www/containers.md | |
| @@ -168,41 +168,14 @@ | |
| 168 | the container while there’s an active WAL, the Fossil instance outside |
| 169 | won’t know about it. It will think it needs to write *its own* |
| 170 | `-journal` and `-wal` files *outside* the container, creating a high |
| 171 | risk of [database corruption][dbcorr]. |
| 172 | |
| 173 | If we map a whole directory, both sides see the same set of WAL files, |
| 174 | so there is at least a *hope* that WAL will work properly across that |
| 175 | boundary. The success of the scheme depends on the `mmap()` and shared |
| 176 | memory system calls being coordinated properly by the OS kernel the two |
| 177 | worlds share. |
| 178 | |
| 179 | There is [a plan](https://tangentsoft.com/sqlite/dir/walbanger?ci=trunk) |
| 180 | for proving to a reasonable level of confidence that using WAL across a |
| 181 | container boundary is safe, but this effort is still in the early stages |
| 182 | as of this writing. |
| 183 | |
| 184 | Until that’s settled, my advice to those who want to use WAL mode on |
| 185 | containerized servers is to map the whole directory as shown in these |
| 186 | examples, but then isolate the two sides with a secondary clone. On the |
| 187 | outside, you say something like this: |
| 188 | |
| 189 | ``` |
| 190 | $ fossil clone https://[email protected]/myproject ~/museum/myproject.fossil |
| 191 | ``` |
| 192 | |
| 193 | That lands you with two side-by-side clones of the repository on the |
| 194 | server: |
| 195 | |
| 196 | ``` |
| 197 | ~/museum/myproject.fossil ← local-use clone |
| 198 | ~/museum/myproject/repo.fossil ← served by container only |
| 199 | ``` |
| 200 | |
| 201 | You open the secondary clone for local use, not the one being served by |
| 202 | the container. When you commit, Fossil’s autosync feature pushes the |
| 203 | change up through the HTTPS link to land safely inside the container. |
| 204 | |
| 205 | [dbcorr]: https://www.sqlite.org/howtocorrupt.html#_deleting_a_hot_journal |
| 206 | [wal]: https://www.sqlite.org/wal.html |
| 207 | |
| 208 | |
| 209 |
| --- www/containers.md | |
| +++ www/containers.md | |
| @@ -168,41 +168,14 @@ | |
| 168 | the container while there’s an active WAL, the Fossil instance outside |
| 169 | won’t know about it. It will think it needs to write *its own* |
| 170 | `-journal` and `-wal` files *outside* the container, creating a high |
| 171 | risk of [database corruption][dbcorr]. |
| 172 | |
| 173 | If we map a whole directory, both sides see the same set of WAL files. |
| 174 | [Testing](https://tangentsoft.com/sqlite/dir/walbanger?ci=trunk) |
| 175 | gives us a reasonable level of confidence that using WAL across a |
| 176 | container boundary is safe when used in this manner. |
| 177 | |
| 178 | [dbcorr]: https://www.sqlite.org/howtocorrupt.html#_deleting_a_hot_journal |
| 179 | [wal]: https://www.sqlite.org/wal.html |
| 180 | |
| 181 | |
| 182 |
+1
| --- www/mkindex.tcl | ||
| +++ www/mkindex.tcl | ||
| @@ -38,10 +38,11 @@ | ||
| 38 | 38 | ckout-workflows.md {Check-Out Workflows} |
| 39 | 39 | co-vs-up.md {Checkout vs Update} |
| 40 | 40 | copyright-release.html {Contributor License Agreement} |
| 41 | 41 | concepts.wiki {Fossil Core Concepts} |
| 42 | 42 | contact.md {Developer Contact Information} |
| 43 | + containers.md {OCI Containers} | |
| 43 | 44 | contribute.wiki {Contributing Code or Documentation To The Fossil Project} |
| 44 | 45 | css-tricks.md {Fossil CSS Tips and Tricks} |
| 45 | 46 | customgraph.md {Theming: Customizing the Timeline Graph} |
| 46 | 47 | customskin.md {Theming: Customizing The Appearance of Web Pages} |
| 47 | 48 | customskin.md {Custom Skins} |
| 48 | 49 |
| --- www/mkindex.tcl | |
| +++ www/mkindex.tcl | |
| @@ -38,10 +38,11 @@ | |
| 38 | ckout-workflows.md {Check-Out Workflows} |
| 39 | co-vs-up.md {Checkout vs Update} |
| 40 | copyright-release.html {Contributor License Agreement} |
| 41 | concepts.wiki {Fossil Core Concepts} |
| 42 | contact.md {Developer Contact Information} |
| 43 | contribute.wiki {Contributing Code or Documentation To The Fossil Project} |
| 44 | css-tricks.md {Fossil CSS Tips and Tricks} |
| 45 | customgraph.md {Theming: Customizing the Timeline Graph} |
| 46 | customskin.md {Theming: Customizing The Appearance of Web Pages} |
| 47 | customskin.md {Custom Skins} |
| 48 |
| --- www/mkindex.tcl | |
| +++ www/mkindex.tcl | |
| @@ -38,10 +38,11 @@ | |
| 38 | ckout-workflows.md {Check-Out Workflows} |
| 39 | co-vs-up.md {Checkout vs Update} |
| 40 | copyright-release.html {Contributor License Agreement} |
| 41 | concepts.wiki {Fossil Core Concepts} |
| 42 | contact.md {Developer Contact Information} |
| 43 | containers.md {OCI Containers} |
| 44 | contribute.wiki {Contributing Code or Documentation To The Fossil Project} |
| 45 | css-tricks.md {Fossil CSS Tips and Tricks} |
| 46 | customgraph.md {Theming: Customizing the Timeline Graph} |
| 47 | customskin.md {Theming: Customizing The Appearance of Web Pages} |
| 48 | customskin.md {Custom Skins} |
| 49 |
| --- www/permutedindex.html | ||
| +++ www/permutedindex.html | ||
| @@ -95,10 +95,11 @@ | ||
| 95 | 95 | <li><a href="json-api/index.md">JSON API</a></li> |
| 96 | 96 | <li><a href="mirrorlimitations.md">Limitations On Git Mirrors</a></li> |
| 97 | 97 | <li><a href="../../../help">Lists of Commands and Webpages</a></li> |
| 98 | 98 | <li><a href="loadmgmt.md">Managing Server Load</a></li> |
| 99 | 99 | <li><a href="../../../md_rules">Markdown Formatting Rules</a></li> |
| 100 | +<li><a href="containers.md">OCI Containers</a></li> | |
| 100 | 101 | <li><a href="password.wiki">Password Management And Authentication</a></li> |
| 101 | 102 | <li><a href="stats.wiki">Performance Statistics</a></li> |
| 102 | 103 | <li><a href="../test/release-checklist.wiki">Pre-Release Testing Checklist</a></li> |
| 103 | 104 | <li><a href="pop.wiki">Principles Of Operation</a></li> |
| 104 | 105 | <li><a href="qandc.wiki">Questions And Criticisms</a></li> |
| 105 | 106 |
| --- www/permutedindex.html | |
| +++ www/permutedindex.html | |
| @@ -95,10 +95,11 @@ | |
| 95 | <li><a href="json-api/index.md">JSON API</a></li> |
| 96 | <li><a href="mirrorlimitations.md">Limitations On Git Mirrors</a></li> |
| 97 | <li><a href="../../../help">Lists of Commands and Webpages</a></li> |
| 98 | <li><a href="loadmgmt.md">Managing Server Load</a></li> |
| 99 | <li><a href="../../../md_rules">Markdown Formatting Rules</a></li> |
| 100 | <li><a href="password.wiki">Password Management And Authentication</a></li> |
| 101 | <li><a href="stats.wiki">Performance Statistics</a></li> |
| 102 | <li><a href="../test/release-checklist.wiki">Pre-Release Testing Checklist</a></li> |
| 103 | <li><a href="pop.wiki">Principles Of Operation</a></li> |
| 104 | <li><a href="qandc.wiki">Questions And Criticisms</a></li> |
| 105 |
| --- www/permutedindex.html | |
| +++ www/permutedindex.html | |
| @@ -95,10 +95,11 @@ | |
| 95 | <li><a href="json-api/index.md">JSON API</a></li> |
| 96 | <li><a href="mirrorlimitations.md">Limitations On Git Mirrors</a></li> |
| 97 | <li><a href="../../../help">Lists of Commands and Webpages</a></li> |
| 98 | <li><a href="loadmgmt.md">Managing Server Load</a></li> |
| 99 | <li><a href="../../../md_rules">Markdown Formatting Rules</a></li> |
| 100 | <li><a href="containers.md">OCI Containers</a></li> |
| 101 | <li><a href="password.wiki">Password Management And Authentication</a></li> |
| 102 | <li><a href="stats.wiki">Performance Statistics</a></li> |
| 103 | <li><a href="../test/release-checklist.wiki">Pre-Release Testing Checklist</a></li> |
| 104 | <li><a href="pop.wiki">Principles Of Operation</a></li> |
| 105 | <li><a href="qandc.wiki">Questions And Criticisms</a></li> |
| 106 |