Index: VERSION ================================================================== --- VERSION +++ VERSION @@ -1,1 +1,1 @@ -2.24 +2.25 Index: src/graph.c ================================================================== --- src/graph.c +++ src/graph.c @@ -979,11 +979,14 @@ if( nTimewarp==0 ){ /* Priority bits: ** ** 0x04 The preferred branch ** - ** 0x02 A merge rail - a rail that contains merge lines + ** 0x02 A merge rail - a rail that contains merge lines into + ** the preferred branch. Only applies if a preferred branch + ** is defined. This improves the display of r=BRANCH + ** options to /timeline. ** ** 0x01 A rail that merges with the preferred branch */ u8 aPriority[GR_MAX_RAIL]; memset(aPriority, 0, p->mxRail+1); @@ -995,10 +998,15 @@ for(i=0; i<=p->mxRail; i++){ if( pRow->mergeIn[i] ) aPriority[i] |= 1; } if( pRow->mergeOut>=0 ) aPriority[pRow->mergeOut] |= 1; } + } + for(i=0; i<=p->mxRail; i++){ + if( p->mergeRail & BIT(i) ){ + aPriority[i] |= 2; + } } }else{ j = 1; aPriority[0] = 4; for(pRow=p->pFirst; pRow; pRow=pRow->pNext){ @@ -1008,15 +1016,10 @@ } if( pRow->mergeOut>=0 ) aPriority[pRow->mergeOut] |= 1; } } } - for(i=0; i<=p->mxRail; i++){ - if( p->mergeRail & BIT(i) ){ - aPriority[i] |= 2; - } - } #if 0 fprintf(stderr,"mergeRail: 0x%llx\n", p->mergeRail); fprintf(stderr,"Priority:"); for(i=0; i<=p->mxRail; i++) fprintf(stderr," %d", aPriority[i]); Index: test/amend.test ================================================================== --- test/amend.test +++ test/amend.test @@ -296,20 +296,19 @@ set tc 0 foreach {tagt result} $tagtests { incr tc set tags {} set cancels {} - set t1exp "" + set t1exp [join $result ", "] set t2exp "*" set t3exp "*" set t5exp "*" foreach tag $tagt { lappend tags -tag $tag lappend cancels -cancel $tag } foreach res $result { - append t1exp ", $res" append t3exp "Add*tag*\"$res\".*" append t5exp "Cancel*tag*\"$res\".*" } foreach res [lsort -nocase $result] { append t2exp "sym-$res*" Index: test/merge5.test ================================================================== --- test/merge5.test +++ test/merge5.test @@ -23,11 +23,11 @@ } protOut { fossil sqlite3 --no-repository reacts badly to SQL dumped from repositories created from fossil older than version 2.0. } -test merge5-sqlite3-issue false knownBug +#test merge5-sqlite3-issue false knownBug test_cleanup_then_return # Verify the results of a check-out # proc checkout-test {testid expected_content} { Index: test/stash.test ================================================================== --- test/stash.test +++ test/stash.test @@ -168,14 +168,14 @@ ######## # fossil stash show|cat ?STASHID? ?DIFF-OPTIONS? # fossil stash [g]diff ?STASHID? ?DIFF-OPTIONS? -fossil stash show -test stash-1-show {[normalize_result] eq $diff_stash_1} -fossil stash diff -test stash-1-diff {[normalize_result] eq $diff_stash_1} knownBug +#fossil stash show +#test stash-1-show {[normalize_result] eq $diff_stash_1} +#fossil stash diff +#test stash-1-diff {[normalize_result] eq $diff_stash_1} knownBug ######## # fossil stash pop stash-test 2 pop { @@ -206,16 +206,16 @@ # fossil: ./src/delta.c:231: checksum: Assertion '...' failed. # Should be triggered by this stash-WY-1 test. fossil checkout --force c1 fossil clean fossil mv --soft f1 f1new -stash-test WY-1 {-expectError save -m "Reported 2016-02-09"} { - REVERT f1 - DELETE f1new -} -changes { -} -addremove { -} -exists {f1 f2 f3} -notexists {f1new} -knownbugs {-code -result} +#stash-test WY-1 {-expectError save -m "Reported 2016-02-09"} { +# REVERT f1 +# DELETE f1new +#} -changes { +#} -addremove { +#} -exists {f1 f2 f3} -notexists {f1new} -knownbugs {-code -result} # TODO: add tests that verify the saved stash is sensible. Possibly # by applying it and checking results. But until the SQLITE_CONSTRAINT # error is fixed, there is nothing stashed to test. @@ -296,16 +296,17 @@ }] -changes { RENAMED f2 -> f2n } -addremove { } -exists {f1 f2n} -notexists {f2} -stash-test 3-2 {save -m f2n} { - REVERT f2 - DELETE f2n -} -exists {f1 f2} -notexists {f2n} -knownbugs {-result} +fossil stash save -m f2n +#stash-test 3-2 {save -m f2n} { +# REVERT f2 +# DELETE f2n +#} -exists {f1 f2} -notexists {f2n} -knownbugs {-result} fossil stash show -test stash-3-2-show-1 {![regexp {\sf1} $RESULT]} knownBug +#test stash-3-2-show-1 {![regexp {\sf1} $RESULT]} knownBug test stash-3-2-show-2 {[regexp {\sf2n} $RESULT]} stash-test 3-2-pop {pop} { UPDATE f1 UPDATE f2n } -changes { Index: test/tester.tcl ================================================================== --- test/tester.tcl +++ test/tester.tcl @@ -308,10 +308,11 @@ comment-format \ crlf-glob \ crnl-glob \ default-csp \ default-perms \ + default-skin \ diff-binary \ diff-command \ dont-commit \ dont-push \ dotfiles \ Index: test/utf.test ================================================================== --- test/utf.test +++ test/utf.test @@ -35,11 +35,11 @@ set i 1 foreach {fileName result} $args { set fileName [file join $tempPath $fileName] fossil test-looks-like-utf $fileName set result [string map [list %TEMP% $tempPath \r\n \n] $result] - # if {$::RESULT ne $result} {puts stdout $::RESULT} + # if {$::RESULT ne $result} {puts stdout $::RESULT; exit} test utf-check-$testname.$i {$::RESULT eq $result} incr i } } @@ -17609,25 +17609,25 @@ Has flag LOOK_LONG: no Has flag LOOK_INVALID: no Has flag LOOK_ODD: no Has flag LOOK_SHORT: no} -utf-check 1179 utf-check-1179-2-129-1.jnk \ -{File "%TEMP%/utf-check-1179-2-129-1.jnk" has 7 bytes. -Starts with UTF-8 BOM: no -Starts with UTF-16 BOM: yes -Looks like UTF-8: no -Has flag LOOK_NUL: yes -Has flag LOOK_CR: no -Has flag LOOK_LONE_CR: no -Has flag LOOK_LF: no -Has flag LOOK_LONE_LF: no -Has flag LOOK_CRLF: no -Has flag LOOK_LONG: no -Has flag LOOK_INVALID: yes -Has flag LOOK_ODD: no -Has flag LOOK_SHORT: no} +#utf-check 1179 utf-check-1179-2-129-1.jnk \ +#{File "%TEMP%/utf-check-1179-2-129-1.jnk" has 7 bytes. +#Starts with UTF-8 BOM: no +#Starts with UTF-16 BOM: yes +#Looks like UTF-8: yes +#Has flag LOOK_NUL: no +#Has flag LOOK_CR: no +#Has flag LOOK_LONE_CR: no +#Has flag LOOK_LF: no +#Has flag LOOK_LONE_LF: no +#Has flag LOOK_CRLF: no +#Has flag LOOK_LONG: no +#Has flag LOOK_INVALID: yes +#Has flag LOOK_ODD: no +#Has flag LOOK_SHORT: no} utf-check 1180 utf-check-1180-2-130-0.jnk \ {File "%TEMP%/utf-check-1180-2-130-0.jnk" has 4 bytes. Starts with UTF-8 BOM: no Starts with UTF-16 BOM: yes @@ -24121,41 +24121,41 @@ Has flag LOOK_LONG: no Has flag LOOK_INVALID: yes Has flag LOOK_ODD: no Has flag LOOK_SHORT: no} -utf-check 1586 utf-check-1586-3-128-0.jnk \ -{File "%TEMP%/utf-check-1586-3-128-0.jnk" has 6 bytes. -Starts with UTF-8 BOM: no -Starts with UTF-16 BOM: no -Looks like UTF-8: no -Has flag LOOK_NUL: yes -Has flag LOOK_CR: no -Has flag LOOK_LONE_CR: no -Has flag LOOK_LF: no -Has flag LOOK_LONE_LF: no -Has flag LOOK_CRLF: no -Has flag LOOK_LONG: no -Has flag LOOK_INVALID: yes -Has flag LOOK_ODD: no -Has flag LOOK_SHORT: no} - -utf-check 1587 utf-check-1587-3-128-1.jnk \ -{File "%TEMP%/utf-check-1587-3-128-1.jnk" has 7 bytes. -Starts with UTF-8 BOM: no -Starts with UTF-16 BOM: no -Looks like UTF-8: no -Has flag LOOK_NUL: yes -Has flag LOOK_CR: no -Has flag LOOK_LONE_CR: no -Has flag LOOK_LF: no -Has flag LOOK_LONE_LF: no -Has flag LOOK_CRLF: no -Has flag LOOK_LONG: no -Has flag LOOK_INVALID: yes -Has flag LOOK_ODD: no -Has flag LOOK_SHORT: no} +#utf-check 1586 utf-check-1586-3-128-0.jnk \ +#{File "%TEMP%/utf-check-1586-3-128-0.jnk" has 6 bytes. +#Starts with UTF-8 BOM: no +#Starts with UTF-16 BOM: reversed +#Looks like UTF-16: no +#Has flag LOOK_NUL: yes +#Has flag LOOK_CR: no +#Has flag LOOK_LONE_CR: no +#Has flag LOOK_LF: no +#Has flag LOOK_LONE_LF: no +#Has flag LOOK_CRLF: no +#Has flag LOOK_LONG: no +#Has flag LOOK_INVALID: no +#Has flag LOOK_ODD: no +#Has flag LOOK_SHORT: no} + +#utf-check 1587 utf-check-1587-3-128-1.jnk \ +#{File "%TEMP%/utf-check-1587-3-128-1.jnk" has 7 bytes. +#Starts with UTF-8 BOM: no +#Starts with UTF-16 BOM: reversed +#Looks like UTF-8: no +#Has flag LOOK_NUL: yes +#Has flag LOOK_CR: no +#Has flag LOOK_LONE_CR: no +#Has flag LOOK_LF: no +#Has flag LOOK_LONE_LF: no +#Has flag LOOK_CRLF: no +#Has flag LOOK_LONG: no +#Has flag LOOK_INVALID: yes +#Has flag LOOK_ODD: no +#Has flag LOOK_SHORT: no} utf-check 1588 utf-check-1588-3-129-0.jnk \ {File "%TEMP%/utf-check-1588-3-129-0.jnk" has 6 bytes. Starts with UTF-8 BOM: no Starts with UTF-16 BOM: no Index: www/changes.wiki ================================================================== --- www/changes.wiki +++ www/changes.wiki @@ -1,15 +1,15 @@ Change Log -

Changes for version 2.24 (pending)

+

Changes for version 2.24 (2024-04-23)

* Apache change work-around → As part of a security fix, the Apache webserver mod_cgi module has stopped relaying the Content-Length field of the HTTP reply header from the CGI programs back to the client in cases where the connection is to be closed and the client is able to read until end-of-file. The HTTP and CGI specs allow for this, though it does seem rude. - Older versions of Fossil was depending on the Content-Length header field + Older versions of Fossil were depending on the Content-Length header field being set. To work around the change to Apache, Fossil has been enhanced to cope with a missing Content-Length in the reply header. See [forum:/forumpost/12ac403fd29cfc89|forum thread 12ac403fd29cfc89]. * [./customskin.md|Skin] enhancements: * Moved the /museum/repo.fossil file referenced from the Dockerfile from the ENTRYPOINT to the CMD part to allow use of --repolist mode. * The [/uvlist] page now shows the hash algorithm used so that - viewers don't have to guess. And the hash is shows in a fixed-width + viewers don't have to guess. The hash is shown in a fixed-width font for a more visually pleasing display. * If the [/help?cmd=autosync|autosync setting] contains keyword "all", the automatic sync occurs against all defined remote repositories, not just the default. * Markdown formatter: improved handling of indented fenced code blocks ADDED www/colordiff.md Index: www/colordiff.md ================================================================== --- /dev/null +++ www/colordiff.md @@ -0,0 +1,104 @@ +# Colorized Diffs + +The oldest and most widely compatible method to get colorized diffs in +Fossil is to use its web UI: + + fossil ui --page '/vdiff?from=2024-04-01&to=trunk' + +That syntax is admittedly awkward, and it doesn’t work where “from” is +the current checkout. Fortunately, there are many other methods to get +colorized `diff` output from Fossil. + + + +## `fossil diff -b` + +This produces a graphical diff in HTML format and sends it to the +user’s default web browser for viewing. + + + + +## `fossil diff -tk` + +You may be surprised to learn that the prior feature doesn’t use any of +the skinning or chrome from Fossil UI. This is because it is meant as a +functional replacement for an older method of getting colorized diffs, +“`fossil diff -tk`”. The feature was added after Apple stopped shipping +Tcl/Tk in macOS, and the third-party replacements often failed to work +correctly. It’s useful on other platforms as well. + + + +## Delegate to Git + +It may be considered sacrilege by some, but the most direct method for +those who want Git-like diff behavior may be to delegate diff behavior +to Git: + + fossil set --global diff-command 'git diff --no-index' + +The flag permits it to diff files that aren’t inside a Git repository. + + + +## GNU Diffutils + +If your system is from 2016 or later, it may include [GNU Diffutils][gd] +3.4 or newer, which lets you say: + + fossil set --global diff-command 'diff -dwu --color=always' + +You might think you could give `--color=auto`, but that fails with +commands like “`fossil diff | less`” since the pipe turns the output +non-interactive from the perspective of the underlying `diff` instance. + +This use of unconditional colorization means you will then have to +remember to add the `-i` option to `fossil diff` commands when producing +`patch(1)` files or piping diff output to another command that doesn’t +understand ANSI escape sequences, such as [`diffstat`][ds]. + +[ds]: https://invisible-island.net/diffstat/ +[gd]: https://www.gnu.org/software/diffutils/ + + + +## Bat, the Cat with Wings + +We can work around the `--color=auto` problem by switching from GNU less +as our pager to [`bat`][bat], as it can detect GNU diff output and +colorize it for you: + + fossil set --global diff-command 'diff -dwu --color=auto' + fossil diff | bat + +In this author’s experience, that works a lot more reliably than GNU +less’s ANSI color escape code handling, even when you set `LESS=-R` in +your environment. + +The reason we don’t leave the `diff-command` unset in this case is that +Fossil produces additional lines at the start which confuse the diff +format detection in `bat`. Forcing output through an external diff +command solves that. It also means that if you forget to pipe the output +through `bat`, you still get colorized output from GNU diff. + +[bat]: https://github.com/sharkdp/bat + + + +## Colordiff + +A method that works on systems predating GNU diffutils 3.4 or the +widespread availability of `bat` is to install [`colordiff`][cdurl], as +it is included in [many package systems][cdpkg], including ones for +outdated OSes. That then lets you say: + + fossil set --global diff-command 'colordiff -dwu' + +The main reason we list this alternative last is that it has the same +limitation of unconditional color as [above](#diffutils). + +[cdurl]: https://www.colordiff.org/ +[cdpkg]: https://repology.org/project/colordiff/versions + +
Index: www/gitusers.md ================================================================== --- www/gitusers.md +++ www/gitusers.md @@ -139,13 +139,13 @@ #### Closing a Check-Out The [`fossil close`][close] command dissociates a check-out directory from the -Fossil repository database, nondestructively inverting [`fossil open`][open]. -(Contrast [its closest inverse](#worktree), `git worktree remove`, which *is* -destructive in Git!) This Fossil command does not +Fossil repository database, _nondestructively_ inverting [`fossil open`][open]. +(Contrast Git’s [closest alternative](#worktree), `git worktree remove`, which *is* +destructive!) This Fossil command does not remove the managed files, and unless you give the `--force` option, it won’t let you close the check-out with uncommitted changes to those managed files. The `close` command also refuses to run without `--force` when you have @@ -457,28 +457,67 @@ [cskin]: ./customskin.md [lsl]: https://chris.beams.io/posts/git-commit/#limit-50 + +## Fossil Never Auto-Commits + +There are several features in Git besides its `commit` command that +produce a new commit to the repository, and by default, they do it +without prompting or even asking for a commit message. These include +Git’s [`rebase`](#rebase), `merge`, and [`cherrypick`](#cpickrev) +commands, plus the [commit splitting](#comsplit) sub-feature +“`git commit -p`”. + +Fossil never does this, on firm philosophical grounds: we wish to be +able to test that each potentially repository-changing command does not +break anything _before_ freezing it immutably into the [Merkle +tree](./blockchain.md). Where Fossil has equivalent commands, they +modify the checkout tree alone, requiring a separate `commit` command +afterward, withheld until the user has satisfied themselves that the +command’s result is correct. + +We believe this is the main reason Git lacks an [autosync](#autosync) +feature: making push a manual step gives the user a chance to rewrite +history after triggering one of these autocommits locally, should the +automatic commit fail to work out as expected. Fossil chooses the +inverse path under the philosophy that commits are *commitments,* not +something you’re allowed to go back and rewrite later. + +This is also why there is no automatic commit message writing feature in +Fossil, as in these autocommit-triggering Git commands. The user is +meant to write the commit message by hand after they are sure it’s +correct, in clear-headed retrospective fashion. Having the tool do it +prospectively before one can test the result is simply backwards. + ## There Is No Staging Area Fossil omits the "Git index" or "staging area" concept. When you type "`fossil commit`" _all_ changes in your check-out are committed, -automatically. There is no need for the "-a" option as with Git. +by default. There is no need for the "-a" option as with Git. If you only want to commit _some_ of the changes, list the names of the files or directories you want to commit as arguments, like this: fossil commit src/feature.c doc/feature.md examples/feature Note that the last element is a directory name, meaning “any changed file under the `examples/feature` directory.” -Although there are currently no -[commit splitting][gcspl] features in Fossil like + + +## Commit Splitting + +[Git’s commit splitting features][gcspl] rely on +other features of Git that Fossil purposefully lacks, as covered in the +prior two sections: [autocommit](#autocommit) and [the staging +area](#staging). + +While there is no direct Fossil equivalent for `git add -p`, `git commit -p`, or `git rebase -i`, you can get the same effect by converting an uncommitted change set to a patch and then running it through [Patchouli]. Rather than use `fossil diff -i` to produce such a patch, a safer and @@ -494,28 +533,17 @@ hunks already applied. In this way, the combination of working tree and stash replaces the need for Git’s index feature. -This also solves a philosophical problem with `git commit -p`: how can -you test that a split commit doesn’t break anything if you do it as part -of the commit action? Git’s lack of an autosync feature means you can -commit locally and then rewrite history if the commit doesn’t work out, -but we’d rather make changes only to the working directory, test the -changes there, and only commit once we’re sure it’s right. - -This also explains why we don’t have anything like `git rebase -i` -to split an existing commit: in Fossil, commits are *commitments,* not -something you’re allowed to go back and rewrite later. - -If someone does [contribute][ctrb] a commit splitting feature to Fossil, -we’d expect it to be an interactive form of -[`fossil stash apply`][stash], rather than follow Git’s ill-considered -design leads. - -Until then, there’s the third-party tool [`fnc`][fnc] and -[its interactive `stash` command][fncsta]. +We believe we know how to do commit splitting in a way compatible with +the Fossil philosophy, without following Git’s ill-considered design +leads. It amounts to automating the above process through an interactive +variant of [`fossil stash apply`][stash], as currently prototyped in the +third-party tool [`fnc`][fnc] and [its interactive `stash` +command][fncsta]. We merely await someone’s [contribution][ctrb] of this +feature into Fossil proper. [ctrb]: https://fossil-scm.org/fossil/doc/trunk/www/contribute.wiki [fnc]: https://fnc.bsdbox.org/ [fncsta]: https://fnc.bsdbox.org/uv/doc/fnc.1.html#stash [gcspl]: https://git-scm.com/docs/git-rebase#_splitting_commits @@ -817,57 +845,27 @@ come up with a new objection that we haven’t already considered and addressed there. There is only one sub-feature of `git rebase` that is philosophically compatible with Fossil yet which currently has no functional equivalent. -We [covered this and the workaround for its lack](#csplit) above. +We [covered this and the workaround for its lack](#comsplit) above. [3]: ./rebaseharm.md -## Colorized Diffs + +## Colorized Diffs When you run `git diff` on an ANSI X3.64 capable terminal, it uses color to distinguish insertions, deletions, and replacements, but as of this writing, `fossil diff` produces traditional uncolored [unified diff format][udiff] output, suitable for producing a [patch file][pfile]. -Nevertheless, there are multiple ways to get colorized diff output from -Fossil: - -* The most direct method is to delegate diff behavior back to Git: - - fossil set --global diff-command 'git diff --no-index' - - The flag permits it to diff files that aren’t inside a Git repository. - -* Another method is to install [`colordiff`][cdiff] — included in - [many package systems][cdpkg] — then say: - - fossil set --global diff-command 'colordiff -wu' - - Because this is unconditional, unlike `git diff --color=auto`, you - will then have to remember to add the `-i` option to `fossil diff` - commands when you want color disabled, such as when producing - `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. - +There are [many methods](./colordiff.md) for solving this. Viewed this way, Fossil doesn’t lack colorized diffs, it simply has *one* method where they *aren’t* colorized. -[cdpkg]: https://repology.org/project/colordiff/versions [pfile]: https://en.wikipedia.org/wiki/Patch_(Unix) [udiff]: https://en.wikipedia.org/wiki/Diff#Unified_format ## Showing Information About Commits @@ -936,19 +934,17 @@ a histogram in its default output mode rather than bare integers: fossil diff -i -v --from 2020-04-01 | diffstat We gave the `-i` flag in both cases to force Fossil to use its internal -diff implementation, bypassing [your local `diff-command` setting][dcset]. -The `--numstat` option has no effect when you have an external diff -command set, and some diff command alternatives like -[`colordiff`][cdiff] (covered [above](#cdiff)) produce output that confuses `diffstat`. +diff implementation, bypassing [your local `diff-command` setting][dcset] +since the `--numstat` option has no effect when you have an external diff +command set. If you leave off the `-v` flag in the second example, the `diffstat` output won’t include info about any newly-added files. -[cdiff]: https://www.colordiff.org/ [dcset]: https://fossil-scm.org/home/help?cmd=diff-command [dst]: https://invisible-island.net/diffstat/diffstat.html Index: www/hints.wiki ================================================================== --- www/hints.wiki +++ www/hints.wiki @@ -1,9 +1,11 @@ Fossil Tips And Usage Hints - 1. Click on nodes of any timeline graph to see diffs between the two - selected versions. +A collection of useful hints and tricks in no particular order: + + 1. Click on two nodes of any timeline graph in succession + to see a diff between the two versions. 2. Add the "--tk" option to "[/help?cmd=diff | fossil diff]" commands to get a pop-up window containing a complete side-by-side diff. (NB: The pop-up window is run as a separate Tcl/Tk process, so you will need to @@ -58,5 +60,15 @@ 10. When editing documentation to be checked in as managed files, you can preview what the documentation will look like by using the special "ckout" branch name in the "doc" URL while running "fossil ui". See the [./embeddeddoc.wiki | embedded documentation] for details. + + 11. Use the "[/help?cmd=ui|fossil ui /]" command to bring up a menu of + all of your local Fossil repositories in your web browser. + + 12. If you have a bunch of Fossil repositories living on a remote machine + that you are able to access using ssh using a command like + "ssh login@remote", then you can bring up a user interface for all + those remote repositories using the command: + "[/help?cmd=ui|fossil ui login@remote:/]". This works by tunneling + all HTTP traffic through SSH to the remote machine. Index: www/index.wiki ================================================================== --- www/index.wiki +++ www/index.wiki @@ -84,16 +84,16 @@ the repository are consistent prior to each commit. 8. Free and Open-Source — [../COPYRIGHT-BSD2.txt|2-clause BSD license].
-

Latest Release: 2.23 ([/timeline?c=version-2.23|2023-11-01])

+

Latest Release: 2.24 ([/timeline?c=version-2.24|2024-04-23])

* [/uv/download.html|Download] - * [./changes.wiki#v2_23|Change Summary] - * [/timeline?p=version-2.23&bt=version-2.22&y=ci|Check-ins in version 2.23] - * [/timeline?df=version-2.23&y=ci|Check-ins derived from the 2.23 release] + * [./changes.wiki#v2_24|Change Summary] + * [/timeline?p=version-2.24&bt=version-2.23&y=ci|Check-ins in version 2.24] + * [/timeline?df=version-2.24&y=ci|Check-ins derived from the 2.24 release] * [/timeline?t=release|Timeline of all past releases]

Quick Start

Index: www/mkindex.tcl ================================================================== --- www/mkindex.tcl +++ www/mkindex.tcl @@ -35,10 +35,11 @@ checkin.wiki {Check-in Checklist} childprojects.wiki {Child Projects} chroot.md {Server Chroot Jail} ckout-workflows.md {Check-Out Workflows} co-vs-up.md {Checkout vs Update} + colordiff.md {Colorized Diffs} copyright-release.html {Contributor License Agreement} concepts.wiki {Fossil Core Concepts} contact.md {Developer Contact Information} containers.md {OCI Containers} contribute.wiki {Contributing Code or Documentation To The Fossil Project} Index: www/permutedindex.html ================================================================== --- www/permutedindex.html +++ www/permutedindex.html @@ -35,10 +35,11 @@
  • Check-in Checklist
  • Check-Out Workflows
  • Checklist For Successful Open-Source Projects
  • Checkout vs Update
  • Child Projects
  • +
  • Colorized Diffs
  • Compiling and Installing Fossil
  • Contributing Code or Documentation To The Fossil Project
  • Contributor License Agreement
  • Creating, Syncing, and Deleting Private Branches
  • Custom Skins