Fossil SCM
Better explanation of why Fossil is faster than Git in "Log" section of gitusers doc, so it isn't dismissed as puffery.
Commit
b2c032ea3ad24e5ff95c56c22d8c4bfbedc940f9adce50107a109043c01bce16
Parent
3c489671570ba33…
1 file changed
+13
-4
+13
-4
| --- www/gitusers.md | ||
| +++ www/gitusers.md | ||
| @@ -278,17 +278,23 @@ | ||
| 278 | 278 | |
| 279 | 279 | |
| 280 | 280 | ## <a id="log"></a> Fossil’s Timeline Is The “Log” |
| 281 | 281 | |
| 282 | 282 | Git users often need to use the `git log` command to dig linearly through |
| 283 | -commit histories due to its [weak data model][wdm]. | |
| 283 | +commit histories due to its [weak data model][wdm], giving [O(n) | |
| 284 | +performance][ocomp]. | |
| 284 | 285 | |
| 285 | 286 | Fossil parses a huge amount of information out of commits that allow it |
| 286 | 287 | to produce its [timeline CLI][tlc] and [its `/timeline` web view][tlw] |
| 287 | -using indexed SQL lookups, | |
| 288 | -which generally have the info you would have to manually extract from | |
| 289 | -`git log`, produced much more quickly than Git can. | |
| 288 | +using indexed SQL lookups, which generally have the info you would have | |
| 289 | +to manually extract from `git log`, produced much more quickly than Git | |
| 290 | +can, all else being equal: [SQLite’s B-tree data structures][btree] | |
| 291 | +generally run in O(log n) time, faster than O(n) for equal *n* when the | |
| 292 | +constants are equal. Yet the constants are *not* equal because Fossil | |
| 293 | +reads read from a single disk file rather than visit potentially many | |
| 294 | +files in sequence as Git must, so the OS’s buffer cache can result in | |
| 295 | +[still better performance][35pct]. | |
| 290 | 296 | |
| 291 | 297 | Unlike Git’s log, Fossil’s timeline shows info across branches by |
| 292 | 298 | default, a feature for maintaining better situational awareness. The |
| 293 | 299 | `fossil timeline` command has no way to show a single branch’s commits, |
| 294 | 300 | but you can restrict your view like this using the web UI equivalent by |
| @@ -313,12 +319,15 @@ | ||
| 313 | 319 | |
| 314 | 320 | This shows what changed in each version, though Fossil’s view is more a |
| 315 | 321 | summary than a list of raw changes. To dig deeper into single commits, |
| 316 | 322 | you can use Fossil’s [`info` command][infoc] or its [`/info` view][infow]. |
| 317 | 323 | |
| 324 | +[35pct]: https://www.sqlite.org/fasterthanfs.html | |
| 325 | +[btree]: https://sqlite.org/btreemodule.html | |
| 318 | 326 | [infoc]: /help?cmd=info |
| 319 | 327 | [infow]: /help?cmd=/info |
| 328 | +[ocomp]: https://www.bigocheatsheet.com/ | |
| 320 | 329 | [tlc]: /help?cmd=timeline |
| 321 | 330 | [tlw]: /help?cmd=/timeline |
| 322 | 331 | [wdm]: ./fossil-v-git.wiki#durable |
| 323 | 332 | |
| 324 | 333 | |
| 325 | 334 |
| --- www/gitusers.md | |
| +++ www/gitusers.md | |
| @@ -278,17 +278,23 @@ | |
| 278 | |
| 279 | |
| 280 | ## <a id="log"></a> Fossil’s Timeline Is The “Log” |
| 281 | |
| 282 | Git users often need to use the `git log` command to dig linearly through |
| 283 | commit histories due to its [weak data model][wdm]. |
| 284 | |
| 285 | Fossil parses a huge amount of information out of commits that allow it |
| 286 | to produce its [timeline CLI][tlc] and [its `/timeline` web view][tlw] |
| 287 | using indexed SQL lookups, |
| 288 | which generally have the info you would have to manually extract from |
| 289 | `git log`, produced much more quickly than Git can. |
| 290 | |
| 291 | Unlike Git’s log, Fossil’s timeline shows info across branches by |
| 292 | default, a feature for maintaining better situational awareness. The |
| 293 | `fossil timeline` command has no way to show a single branch’s commits, |
| 294 | but you can restrict your view like this using the web UI equivalent by |
| @@ -313,12 +319,15 @@ | |
| 313 | |
| 314 | This shows what changed in each version, though Fossil’s view is more a |
| 315 | summary than a list of raw changes. To dig deeper into single commits, |
| 316 | you can use Fossil’s [`info` command][infoc] or its [`/info` view][infow]. |
| 317 | |
| 318 | [infoc]: /help?cmd=info |
| 319 | [infow]: /help?cmd=/info |
| 320 | [tlc]: /help?cmd=timeline |
| 321 | [tlw]: /help?cmd=/timeline |
| 322 | [wdm]: ./fossil-v-git.wiki#durable |
| 323 | |
| 324 | |
| 325 |
| --- www/gitusers.md | |
| +++ www/gitusers.md | |
| @@ -278,17 +278,23 @@ | |
| 278 | |
| 279 | |
| 280 | ## <a id="log"></a> Fossil’s Timeline Is The “Log” |
| 281 | |
| 282 | Git users often need to use the `git log` command to dig linearly through |
| 283 | commit histories due to its [weak data model][wdm], giving [O(n) |
| 284 | performance][ocomp]. |
| 285 | |
| 286 | Fossil parses a huge amount of information out of commits that allow it |
| 287 | to produce its [timeline CLI][tlc] and [its `/timeline` web view][tlw] |
| 288 | using indexed SQL lookups, which generally have the info you would have |
| 289 | to manually extract from `git log`, produced much more quickly than Git |
| 290 | can, all else being equal: [SQLite’s B-tree data structures][btree] |
| 291 | generally run in O(log n) time, faster than O(n) for equal *n* when the |
| 292 | constants are equal. Yet the constants are *not* equal because Fossil |
| 293 | reads read from a single disk file rather than visit potentially many |
| 294 | files in sequence as Git must, so the OS’s buffer cache can result in |
| 295 | [still better performance][35pct]. |
| 296 | |
| 297 | Unlike Git’s log, Fossil’s timeline shows info across branches by |
| 298 | default, a feature for maintaining better situational awareness. The |
| 299 | `fossil timeline` command has no way to show a single branch’s commits, |
| 300 | but you can restrict your view like this using the web UI equivalent by |
| @@ -313,12 +319,15 @@ | |
| 319 | |
| 320 | This shows what changed in each version, though Fossil’s view is more a |
| 321 | summary than a list of raw changes. To dig deeper into single commits, |
| 322 | you can use Fossil’s [`info` command][infoc] or its [`/info` view][infow]. |
| 323 | |
| 324 | [35pct]: https://www.sqlite.org/fasterthanfs.html |
| 325 | [btree]: https://sqlite.org/btreemodule.html |
| 326 | [infoc]: /help?cmd=info |
| 327 | [infow]: /help?cmd=/info |
| 328 | [ocomp]: https://www.bigocheatsheet.com/ |
| 329 | [tlc]: /help?cmd=timeline |
| 330 | [tlw]: /help?cmd=/timeline |
| 331 | [wdm]: ./fossil-v-git.wiki#durable |
| 332 | |
| 333 | |
| 334 |